1
C/C ++程序设计
1.2.12.2 12.2 调试技术

12.2 调试技术

程序调试主要是发现并改正程序中的错误使程序能够正确执行。首先需要避免的一点是:拿到一个题目后没有仔细分析该问题,也没有花足够的时间设计算法而急于编写代码或者运行程序。正确的做法是深入分析问题,理解问题之后再来编写代码,把前期工作做充分。换句话说,分析问题的时间越短则可能导致排错和调试的时间越长。

编辑完源程序后首先需要编译该程序,这里强调的一点是在编译程序前还有工作需要完成,即先进行人工检查,争取找出一些错误,为后面的工作节省时间。看看程序有没有语法错误,是不是漏加了分号或括号等等。说到人工检查,提高效率的一个很好做法是注意自己程序的书写风格,养成一个良好的程序书写习惯。这样无论是自己查看代码还是别人来读自己的代码都会节省不少时间和精力。另外尽可能添加相关的注释,用来标识每段(句)代码的作用或含义。

经过人工检查之后就可以编译程序了,如果程序有错编译器会给出提示信息。提示信息包含两种即error(错误)和warning(警告)信息,接下来即可根据详细的信息进行更正。举例如下(以VC6.0中的调试信息为例)。

警告信息:

warning C4700:local variableˊpcˊused without having been initialized

错误信息:

error C2143:syntax error:missingˊ;ˊbeforeˊ}ˊ

有时编译和链接都通过了但运行结果不对,此时就要考虑是否存在程序的逻辑错误,此类错误也是较难发现的潜在错误,我们应认真对待,建议可以将程序分成几个模块分别调试以提高效率。下面介绍一个最常用的调试程序的方法。

设置断点:在程序中可以设置断点,用来监视某些变量的值以帮助排错。设置断点的方法可以在快捷按钮区域选择“手型”按钮来设置,或者按快捷键F9,如图12-2所示。

img414

图12-2

设置断点后的效果如图12-3所示。

img415

图12-3

设置断点以后可以按F5键开始调试程序,程序此时会停在断点处等待下一步的操作,具体效果如图12-4所示。

img416

图12-4

在界面的下半部分会出现变量的监视窗口,可以结合代码和这里出现的数值来判断执行情况,界面如图12-5所示。

img417

图12-5

此时可以选择F10键或者F11键来进一步跟踪变量的变化情况。在具体的调试过程中还可以打开调用堆栈命令和内存镜像命令进行更加深入细致的调试。

排错和调试的经验需要自己一点一滴的积累,写的程序多了,调试的程序多了,经验会渐渐的丰富,直到练就一双孙悟空的“火眼金睛”,使得程序中的bug无处藏身。