Visual C++编译选项

  1. 特别针对调试版本的编译选项
    /MDd,/MLd或者/MTd
    调试版本的运行时刻库有调试符号,使用了调试堆,调试堆的目的是发现内存破坏和内存泄漏,并且向用户报告源代码的哪个地方出了问题。特性:
    .调试版本的运行时刻库对内存的分配作了跟踪,允许用户检查内存泄漏。
    .在刚分配的内存里写上0xCD的字节模式,用0xCD来填充刚分配的内存,有助于发现数据未被初始化的错误。
    .在被释放的内存写上0xDD的字节模式,有助于发现已被释放的内存。
    .在缓冲区的两边分配了四字节的保护数据,并用0xFD的字节模式作初始化,来检查写内存的上溢出和下溢出。
    .在每个内存分配的地方对源代码文件名和行号作了记录,有助于用户在源代码中对内存分配进行定位。0b3a1c08b4f3358662d986c4.jpg

  2. /Od
    这个选项用来关闭优化开关。因为未被优化的代码直接对应于源代码,所以比优化后的代码更容易读懂。未被优化的代码编译和链接会更快,会有更短的调试周 期。而由于优化,发布版本不见得会比调试版本运行得好,优化代码要求编译器做一些假设,去除冗余,但有时这个假设是错误的,并且去掉的冗余也有可能隐藏错 误。如发布版本的帧指针(EBP寄存器)省略(FPO)隐藏了函数原型不匹配的错误;在同步异常模式(只能由throw语句抛出,编译器默认,由/GX编 译选项设置)下,异常处理程序可能被优化掉,会阻止程序中的C++异常处理代码安全地捕获结构异常,在这种情况下,你必须使用异步异常模式(采取任何指令 都会产生异常的机制,由/Eha编译选项设置)。6f470395c7733d5f7bf480c5.jpg

  3. /D “_DEBUG”
    打开条件编译调试代码开关。只有这个符号被定义,调试代码才会被编译,MFC使用_DEBUG符号来确定到底链接的是哪个版本的MFC类库。在调试版本中,内联默认情况下是被关闭的。8cf0d513055f3674dd5401c7.jpg

  4. /ZI
    创建编辑继续(Edit and Continue)的程序数据库。这个选项会打开/GF编译选项,/GF编译选项会消除重复字符串,并将字符串放到只读内存。编辑继续功能需要获取存储在 PDB文件里的特殊信息来使得代码的修改对调试器有效。如果被修改文件对应的信息不在PDB文件里,编辑继续功能就不能进行,而且在调试过程中对代码的任 何修改都会出现下面的提示信息“One or more files are out of date or do not exist.”。3792cb39b10c05a43a87cec0.jpg

  5. /GZ
    在调试版本中用来发现那些在发布版本里才发现的错误。其作用如下:
    .用0xCC模式初始化自动(本地)变量。
    .在通过函数指针调用函数时,检查栈指针,确认是否有调用规则不匹配。
    .在函数最后检查栈指针是否被改变。0d968f2380d09e13ad34dec1.jpg

  6. /Gm
    打开最小化重新链接开关,减少链接时间。

转载于:https://my.oschina.net/qichang/blog/32550

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值