c. Open the Configuration Properties | Linker | Debugging property
page and set the Generate Debug Info option to Yes (/DEBUG).
5. Click OK to save the settings and then rebuild the application. Once finished,
your application will be ready for profiling in AQtime.
四、Release版与Debug的区别:
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)
1.Debug 版本
参数 含义 : ? ? ? ? ? ?
/MDd /MLd 或 /MTd 使用 Debug runtime library (调试版本的运行时刻函数库) /Od 关闭优化开关
/D \相当于 #define _DEBUG,打开编译调试代码开关 (主要针对assert函数)
/ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译
/GZ 可以帮助捕获内存错误
/Gm 打开最小化重链接开关, 减少链接时间
2.Release 版本
参数 含义 : ?
/MD /ML 或 /MT 使用发布版本的运行时刻函数库
? ? ? /O1 或 /O2 优化开关,使程序最小或最快
/D \关闭条件编译调试代码开关 (即不编译assert函数) /GF 合并重复的字符串, 并将字符串常量放到只读内存, 防止被修改
实际上,Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。
3.Debug和Release对AQtime的直接影响:
测试部分代码: ……..
void PrintMessage( CString strMessage ) {
AfxMessageBox( strMessage ); }
void CDebugSettingDlg::OnBnClickedButton1() {
CString strTemp;
strTemp = \PrintMessage( strTemp );
// TODO: Add your control notification handler code here }
void CDebugSettingDlg::OnBnClickedButton2() {
CString strTemp;
strTemp = \PrintMessage( strTemp );
// TODO: Add your control notification handler code here }
1)在AQtime中添加release版待测程序:
2)在AQtime中添加debug版待测程序:
PrintMessage不是DebugSettingDlg类的成员函数,只是被OnbnClickedButton1和
OnbnClickedButton1所调用。在release模式下,PrintMessage是看不到的;但在debug模式下,PrintMessage不但可以看到,而且还可以记录其执行信息。 NOTE:
如果在编译Release模式时,将Optimization改为其他模式而非Maximize Speed,那么PrintMessage就可以看到了。
1).Disabled:
2).Minimize Size(最小体积):
3).Maximize Speed(最高速度):