程序调试方法总结

 

在应用程序开发和调试过程中,经常遇到这样的问题:由于某个变量的值被错误地改变,导致程序出错甚至crash,如果程序运行在多线程环境,或者程序逻辑非常复杂,我们想跟踪这个变量的变化将会非常困难。有没有办法能够在调试过程中使程序自动在改变变量处断点呢?这样我们就能一一查看该变量值的改变情况,从而发现到底是什么时刻进行了错误的操作。

    比较常用的方法可能是用TRACE等方法在改变值的地方输出信息,但是这样就没有了堆栈等调试信息,而且对于比较大型的程序,需要添加很多调试语句,结果也不直观。还可以在所有涉及到改变该值的语句前加上断点,然后F5进行调试。这种方法在大型程序面前似乎也很费力,况且如果程序中用到了引用等操作,断点很难设置完整。

    其实VC环境为我们提供了一个非常好的工具完成这件事情。下面以vc2008为例进行说明。

    1、在程序最先能够watch这个变量的地方设置一个断点(或者是你认为合适的地方),F5运行程序;

    2、在断点处找到该变量,打开Breakpoints调试窗口(可按Alt+F9打开),左上角有一个“New”菜单,选择“New Data Breakpoint...”项,弹出窗口如下: 

 

 

 

 

 

 在其中的“Address”处填入变量地址即可。注意一般C++的程序地址都是32位,因此下面两个值都不用改动。如果觉得找变量的地址比较麻烦,可以简单地填入“&+变量”,比如你要跟踪一个变量“nCount”的值,则填入“&nCount”即可。该处填写的意思是:当填写的地址所在变量的值有变化的时候,程序将自动断点。

    3、设置完后按F5继续运行,当该值被改变时,将弹出对话框如下

 

 

 

确定后程序就会在相应的代码处断点,我们就可以方便地查看call stack等当前程序信息了。

    当然,该方法对于跟踪那些频繁变化的变量不太合适,最适合那些变动较少,但是发生改变的条件比较复杂的变量。大家在以后的调试过程中可以尝试使用一下,在某些场合可能是其他方法不能比的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值