通用单步调试指南
单步调试是调试程序十分有用的方法,你可以逐行执行程序并查看变量的值。然而这一高效的方法并非在每个学校的编程课上都会教学。尤其是对于非计算机专业的学生,单步调试更可能闻所未闻,大大增加了调试程序的难度。本文旨在大致介绍单步调试所包含的内容和操作方法。
一些提示与准备
在某些开发环境(如CodeBlock)下,尽管你可以在不创建项目的情况下编译代码,但是你仍然需要创建项目才能使用调试工具。
在大多数开发环境下,你可以点击最上方的调试 (Debug)
选项卡(可能会是不同的名字)上看到本文接下来会提到的操作对应的按键。熟练掌握快捷键会大幅度提高操作的效率。
单步调试的操作在绝大多数的开发环境下都大同小异,且与使用的编程语言无关。因此本指南使用Visual Studio 2019开发环境,C++语言作为演示。
断点 (Breakpoint)
顾名思义,断点可以理解为是一个可以打在代码某一行上的点。在调试模式下,当程序运行到断点所在行时,程序就会暂停。
如下图所示,断点可以通过点击代码行数附近的位置来创建。
在调试模式下,当程序运行到断点所在行时,程序就会暂停。此时,你可以寻找一个显示变量的窗口,并在其中查看局部变量的值。你也可以在监视窗口
你可以手动输入变量名,并查看它的值。在调试过程中,你可以通过这个来发现哪些变量的值与你的想法不符。假如你没有找到这个窗口,你可以尝试搜索关键词你使用的开发环境
,监视窗口
,单步调试中查看变量的值
等。


逐语句与逐过程 (Step Into & Step Over)
逐语句
和逐过程
的作用都可视作为:运行黄色箭头所在行,并将黄色箭头下移。

让我们再次按下逐语句
或逐过程
对应的按键,可以发现在本行的黄色箭头消失了。这是因为第19行是输入语句,当我们转到控制台窗口输入数据之后,黄色箭头将会再次出现。
那么逐语句
和逐过程
的区别是什么呢?当我们运行到第21行时就可以发现,若使用逐语句(Step Into)
则会进入函数体,而使用逐过程(Step Over)
则不会进入。

跳出 (Step Out)
在调试模式下,再次打开Visual Studio的调试选项卡,我们可以发现有了更多的选项,而跳出
是其中之一。在检查完一个函数后,跳出
可以帮助我们便捷地跳出函数体,而不需要手动运行完整个函数。若我们在上一步进入了函数体内部,则可以通过跳出
来回到第22行。
继续 (Continue)
我们也可以找到继续
选项。可以猜到,当我们按下继续
选项后,程序就会继续运行直到遇到下一个断点。假如没有遇到断点,那么程序就会运行完成。
结语
以上就是单步调试的常用操作。单步调试十分重要也十分有用,请务必多多练习,直到熟练掌握。
许多开发环境还配备了一些特殊功能,如条件断点,设置断点命中次数等。你可以通过在搜索引擎中搜索关键词你使用的环境 单步调试
来更好地了解自己使用的工具。