vc6.0调试技巧[bobob原创]

Q :========vc6.0调试技巧[原创]========
主要解答者:bobob提交人:bobob
感谢:fisker0303、 kugou123、yysbest、Snow_Ice1111、languagec、kelinwang19、daffyduck、dreamcs、 lonkil、lzzqqq、guosx、yyxc306、njvisual、Jacques928、liumang9527、vans322、 gokill、ilun、thisisll、forthelichking
审核者:bobob社区对应贴子:查看
     A :

最近有空,写点东西给初学者,写的比较乱,有疑问可以跟贴讨论:)  
 
了解调试,首先要知道"断点"这个概念.断点就是程序运行中可能会中断的地方,方便开发者在程序运行的过程中查看程序当前的运行状态,比如变量的值,函数的返回值等等.究竟怎么使用断点呢?  
1.F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点.  
   F5调试状态运行程序,程序执行到有断点的地方会停下来.  
   F10单步执行程序.  
   CTRL+F10运行到光标所在行.  
   F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面.  
   SHIFT+F11跳出当前所在函数.  
 
特别说明:  
   a.有的地方不能下断点.比如空行,基本类型定义语句(不初始化),等等非执行语句.比如  
           int              i;                            //  此行不能下断点  
           int              j=0;                        //  这里可以下  
           CString            str;                        //  这里可以下  
           int            k  =  Max(i,j);            //  这里可以下  
   b.不是所有断点都会(断).比如下断点的语句在程序里面没有被执行.  
   c.此外,ALT+F9还可以下条件断点,不过这个不常用,有兴趣的可以自己研究:)  
 
2.如何调试Release版的程序?  
   有些程序在debug下运行的很好,但在release下却总是失败,默认情况下release是不能调试的.  怎么解决呢?  
   其实"debug"和"release"都只是一个代号而已,各自对应一组不同的编译选项.  
   在release的默认设置下,ALT+F7  ,调出工程设置对话框,切换到link选项卡,勾选"Generate  debug  info",然后再切换到C/C++选项卡,在"Optimizations"里面选"Disable(Debug)",在下面的"Debug  info"里面选"Program  Database  for  Edit  and  Continue".然后点OK保存设置,重新编译程序,下断点即可.  
3.上面两点已经能应付很多种情况了,但是有时候即使在debug下也不能下断点,我以前也曾经遇到过这种问题,一个调了4层的dll,就是不能下断点.其实还除了上面的方法,还有一种最底层的实现技术:使用汇编.  
   细心的人可能会发现,有时候在调试状态下当程序出现异常的时候,光标会指向汇编代码,而这个代码就是int  3,这其实是一个中断.  
   在你的代码的任意地方加上  
   __asm{  
               int  3  
           };  
   用debug编译,然后直接运行程序.当程序执行到上述代码的时候,就会出现一个框,告诉你说一大堆信息,说程序错了,下面有"调试"、"终止"、"忽略",不用理,点调试就可以进入跟  踪了。这种方法我还没有失  手过:)  
 
<完>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值