与调试有关的编译和链接选项

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

跟踪错误有用的编译选项:

/W4 用最高的警告层次编译(所有版本均使用)

/D “_DEBUG” 打开条件编译调试开关,即定义了 _DEBUG(仅调试版使用)

/GZ 检查包括未被初始化的自动(局部)变量、堆栈错误、不正确的函数原型

(仅调试版使用)

/Od 关闭优化开关,使得代码更易读懂(仅调试版使用)

/GF 消除重复的字符串,并将字符串放到只读内存中,避免它们被错误地修改。

当/ZI选项打开时,该选项被自动打开(仅在发布版使用)

/ZI 用调试符号和编辑继续信息创建程序数据库,从而减少调试周期的时间和

所花费精力(仅在调试版中使用)

/Zi 创建调试符号的程序数据库(仅在发布版使用)

调试错误有用的链接选项:

/MAP:”Debug/ProgramName.map” 创建一个映射文件

/MAPINFO:LINES 在映射文件中添加行号信息

针对调试版本的编译选项:

/MDd,/MLd,/MTd 使用调试版本的运行时刻函数库

/Od

/D “_DEBUG”

/ZI

/GZ

/GM 打开最小化重新链接开关,减少链接时间

针对发布版本的编译选项:

/MD,/ML,/MT 使用发布版本的运行时刻函数库

/O1或/O2 打开优化开关,使得程序会最小或速度最快

/D “NDEBUG” 关闭条件编译调试代码开关

/GF

你可以选择任何一组选择,所以你可以有一个带调试符号、跟踪语句、断言语句的

发布版本,只要你选择了这些选项。

调试版本和发布版本的运行时刻函数库的区别:

调试版本的运行时刻函数库有以下几个特性:

l 其对内存分配作了跟踪

l 在刚分配的内存里写上0xCC,有助于发现使用未被初始化数据的错误

l 在被释放的内存里写上0xCD

l 在缓冲区的两边分配了四字节的保护数据,并用0xFD作初始化,来检查写内存

的上溢出和下溢出。

变量优化:

优化会去掉不必要的变量以及重复使用的变量,可能会优化而保存在寄存器中。

这可能会隐藏错误,特别在多线程中。volatile关键字告诉编译器不能对该变量优化。事

实上调试版本中的所有变量都是volatile的。

内联函数

VC在调试版中默认关掉内联,具体地说,内联是被/Ob0编译选项关掉的。对于发布版,

内联能被/O1(大小最小)、/O2(速度最小)、/Ox(完全优化)打开。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航