Debug方法总结

前言:

还没开学就搞了一个什么实训,让用C++做一个数据处理小程序。

程序不难,却也在此过程中总结回顾了一下VC中Debug的一些方法。

方法总结:

① 分阶段测试。

从一开始,每写一段就运行一下,这样出错时可以及时发现改正——否则攒了好几个错误在测试,Debug难度可能非线性增加。

② 设断点调试。

当错误可能出现在比较广的范围时,通过设断点来查看运行到每个点是否报错。

可以通过二分的思想不断缩小排查范围,最终找到出错点。

③ 跟踪变量。

如果最后输出的变量值和预期的不一样,可以跟踪变量来查看哪一步出错了。
跟踪变量一种方法是通过IDE的跟踪变量更能来查看,另一种方法是在关键点上输出变量的值来跟踪变量。

可以和【设置断点调试】结合来用。

④ 注释代码测试。

  1. 如果怀疑因为某行代码报错,可以通过注释掉该行数据来测试程序。好处在于方便快捷。

  2. 如果程序出错了,却又不知道在哪出错了,那么可以可以用 [二分的思想] 通过注释来定位错误所在:

    把出错的程序和 空白/未出错状态的程序

⑤ 控制变量换参数测试。

如果知道是因为某行代码报错,却不知道错在哪,可用该方法。

一方面百度该行语句的使用有没有错误;另一方面可以控制变量,换掉一些东西(如变量)来测试到底哪出问题了。

⑥ 查看内存调试(Learn this point from Mrs. Shine Wan)

当涉及到“位”级别时,可以用该方法来查看调试
在调试页面可以查看内存,来查看某个数据在内存中存储数值。

例如,查看p变量在内存中如何存储,
①. 查看 &p 值,即 p变量的存储地址
②. 在内存查看界面查看 该地址 存储的数值

本文章迁移自http://blog.csdn.net/timberwolf_2012/article/details/10084987

/** * RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS. * LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/ /* var disqus_config = function () { this.page.url = PAGE_URL; // Replace PAGE_URL with your page's canonical URL variable this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable }; */ (function() { // DON'T EDIT BELOW THIS LINE var d = document, s = d.createElement('script'); s.src = 'https://chenzz.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })();