学编程不会调试,这简直就跟做买卖不会数钱一样好笑,有时候程序出了bug,思维受限的时候,肉眼是很难判断出错误的地方的,虽然调试不一定非得用Debug模式来进行,但是使用vs系列的Debug模式的确是个比较方便的好办法。
首先介绍一些快捷键:
这个就是直接运行程序,不会在任何断点处下来,所以实际上并不属于Debug模式的范畴,而是直接运行程序了。这样运行的程序结束后会自动pause一下,所以比较方便的能查看程序运行的结果,而不会出现所谓的“闪退”。
表示开始调试,如果程序设置了断点,或者需要从控制台读入数据,那么会在断电处或者输入数据的地方停止下来,否则将运行程序直到结束,而当程序结束的时候,他会直接结束调试模式,可以说是一种“闪退”,这是正常现象。这个键我个人一般不会用,通常会用F10来ctrl+F10来代替。
单步执行(逐过程),按下F10键后,会在代码的左边出现一个箭头,表示当前程序运行到的地方(当前行并未执行)。每按一次,程序就会向下运行一行,直到程序结束。注意当运行到调用函数的地方的时候,会跳过函数体的内部的运行细节而直接运行到函数返回后的结果。
直接运行到光标所在位置(光标所在位置不表示鼠标指针所在位置。。不要犯傻哦),简单暴力。
单步执行(逐语句),基本作用与F10一样,唯一的不同是,当运行到调用函数的时候,按下该键会直接进入函数体内部,比如scanf函数之类的(这显然是我们不需要知道的),一般情况下如果我们确实想进入函数内部看看,我都会直接用Ctrl + F10直接进去,而不是F11 F11的慢慢走。
设置和取消断点,会在当前代码行前出现一个红点点,当然直接在代码行前单击一下也可以设置和取消断点,所以这个键比较鸡肋,也不常用。
通过以上的方法,我们进入了Debug模式,进入了这个模式,我们就可以做很多事情了,最简单的事情就是查看单个变量运行时的值。想要做到这一点我们只需要把鼠标指针移到想要查看的光标上,光标旁边就会出现他的值了:
当然,如果想查看一个数组各个元素的值,我们可以把鼠标放在数组名上,就会出现这样的下拉界面:
就可以方便的看到了各个数值了。
当然,如果想更加清楚的看各个数字的变化的话,我们可以调出添加监视的界面。右键某一个变量,选择添加监视:
点开后这样就会出现一下的一个界面:
这个窗口的“名称”部分,我们可以写入我们需要查看的变量的名字,右边会显示他对应的当前的值。如果名字是一个数组,那么他的值显示的是他数组的首地址(没什么卵用),但是我们可以点开名称前面的小三角,来显示出数组中各个元素的值。
在Debug模式下,点击窗口的红叉叉实际上是关闭不了的,我们当然可以在菜单中选择停止调试,但是这样显然很cuo(第二声)(实际上按按钮的行为都很cuo(第二声),所以我把我的按钮那一栏都直接取消了,是不是看上去非常干净0.0),快捷的做法是按shift + F5 这样就可以结束Debug模式而到正常的码代码的模式了。
以上是最基本的Debug方法了,这是最基本的调试方法,每一个人都必须要掌握。
以下是一些比较高级的调试手段了,说高级,并不是说有多难掌握,只是说相对于基础的调试方法来说,这种方法更加快捷,方便程序员使用,他们的关系,我觉得就像各种运行库之于操作系统所提供的API一样,前者是对后者的封装和简化,有兴趣的同学可以来研究研究。
当我们右键设置的断点的时候,我们会发现这样的菜单:
这里我们常用的就是 “条件”选项,和“命中次数”选项,我说了,由于这是“高级”调试手段,所以操作界面十分的User-friendly,应该打开就会用了,我就不赘述了。
注: