鉴于同学们的调试问题太多,
而使用断点调试的太少(大部分还在使用cout 吧……),
于是随手写一篇断点教程,
希望能对大家有所帮助。
注意:
本篇教程为入门级,
时间宝贵,
进阶者请自行斟酌。
IDE环境:VS2012
语言:C++
1.首先请大家先将行数的显示开关打开。
位置在:工具->选项->文本编辑器->C++ ->常规 ->勾选"行号"
2.接下来来讲一下断点的概念:
所谓的断点(BreakPoint),
即是在开发者在调试过程中设置的"程序中断点",
当程序在运行到此行的时候会中断,
并显示相关数据,
以供开发者参考查错。
一般的新手喜欢看输出控制台,
因为大部分讲师就是这样做的,
这也没错,
但是如果数据量比较大、
或是变量之间的相关度紧密,
难以从较少变量中发现问题的时候,
控制台输出就有点力不从心了。
而从某种意义上来讲,
断点的存在就是将输出控制台过程显式化,自动化,
从而让开发者更加便捷地调试。
因此断点调试是程序员的必备技能之一。
3.添加断点
在VS中添加断点非常简单,
只需要在行号的左侧空白处点击即可,
如下图所示:
4.查看断点相关数据
然后点击运行,
当程序运行到断点所在行时会停止,
如下图所示:
在下方的自动窗口就可以看到断点所在作用域的相关数据显示了。
5.解读断点数据。
如上图所示,
红色的显示为发生变化的变量,
而黑色则是没有变化的。
我们可以看到,
在i = 0的时候,
左值todayData的地址为0x58ff3e4,
其存储数组为{0,0,0,0}
6.逐过程调试
接下来我们点击窗口上方的"逐过程"按钮
再次运行到断点处停止,
此时信息显示如下:
可以看到,
这次i = 1,
而此时todayData已经恢复成黑色,
其目前存储的数组为{32,0,0,0},
数据的变化简单而直观,
非常明显。
7.完毕
怎样,
是否非常简单?
其实有时候只需要学习一种小技巧,
就能极大地提高编程效率,
多尝试一些新东西,
或许就能发现一片更广阔的天空。
其实关于断点还有更多的知识,
例如点击次数断点,筛选器断点,条件断点…都是非常有用的,
但限于本文目的,
笔者不再详细解释。
如果大家有兴趣,
可以搜索一下,
学习深入一些,
相信调试效率将会得到进一步的提升。
8.Q&A
【请问为什么我的程序没有停下来?】
首先,请仔细检查是否禁用断点(显示为空圆框),
然后,一定要确定程序会执行到所在行。
其实还有可能是调试符号文件没有被正确加载,
但这个就比较"深奥"了,
大家遇见几率应该不会太高。
【是否可以设置多个断点?】
当然可以,
而且鼓励大家这样做,
配合条件/点击次数断点使用,
是非常方便的。
【我有一个断点,目前不需要,但是以后会用到,怎么办?】
在断点上点击右键,
设置为禁用就OK了。
【可以管理断点么?】
VS中可以右键断点,
点击"编辑标签"即可。
还可以导出哦。
【关于断点,还有什么秘籍吗?】
如果将上述进阶断点研究完毕的话,
还有一个终极秘籍,
只限于VS中才有的哦。
那就是"代码图"!!!
这是VS中(单机编程)最强大的工具之一!!
具体怎么用,
请自行Google~
哈哈。