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

跟踪错误有用的编译选项

/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(完全优化)打开。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值