Debug和Release版本的区别

三、怎样“调试”   Release   版的程序  
   
          遇到   Debug   成功但   Release   失败,显然是一件很沮丧的事,而且往往无从下手。如果你看了以上的分析,结合错误的具体表现,很快找出了错误,固然很好。但如果一时找不出,以下给出了一些在这种情况下的策略。  
           
          1.   前面已经提过,Debug   和   Release   只是一组编译选项的差别,实际上并没有什么定义能区分二者。我们可以修改   Release   版的编译选项来缩小错误范围。如上所述,可以把   Release   的选项逐个改为与之相对的   Debug   选项,如   /MD   改为   /MDd、/O1   改为   /Od,或运行时间优化改为程序大小优化。注意,一次只改一个选项,看改哪个选项时错误消失,再对应该选项相关的错误,针对性地查找。这些选项在   Project/Settings...   中都可以直接通过列表选取,通常不要手动修改。由于以上的分析已相当全面,这个方法是最有效的。  
   
          2.   在编程过程中就要时常注意测试   Release   版本,以免最后代码太多,时间又很紧。  
           
          3.   在   Debug   版中使用   /W4   警告级别,这样可以从编译器获得最大限度的错误信息,比如   if(   i   =0   )就会引起   /W4   警告。不要忽略这些警告,通常这是你程序中的   Bug   引起的。但有时   /W4   会带来很多冗余信息,如   未使用的函数参数   警告,而很多消息处理函数都会忽略某些参数。我们可以用  
              #progma   warning(disable:   4702)   //禁止  
              //...  
              #progma   warning(default:   4702)   //重新允许  
  来暂时禁止某个警告,或使用  
              #progma   warning(push,   3)   //设置警告级别为   /W3  
              //...  
              #progma   warning(pop)   //重设为   /W4  
  来暂时改变警告级别,有时你可以只在认为可疑的那一部分代码使用   /W4。  
   
          4.你也可以像   Debug   一样调试你的   Release   版,只要加入调试符号。在   Project/Settings...   中,选中   Settings   for   "Win32   Release",选中   C/C++   标签,Category   选   General,Debug   Info   选   Program   Database。再在   Link   标签   Project   options     最后加上   "/OPT:REF"   (引号不要输)。这样调试器就能使用   pdb   文件中的调试符号。但调试时你会发现断点很难设置,变量也很难找到——这些都被优化过了。不过令人庆幸的是,Call   Stack   窗口仍然工作正常,即使帧指针被优化,栈信息(特别是返回地址)仍然能找到。这对定位错误很有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值