然后切回我们的Visual Studio,这时候我们就可以看到,
我们的程序进入我们预期的一样进入了断点,然后 我们按Step
Over,到这一句,到这一句的时候,我接下来按一下 Step Into,它就到这个函数里了,
如果我们再按Step Over的话,它就还是会像刚才一样跳到这个循环的开始。
Step Over这个命令的意思就是执行完当前这一行语句之后到下一行上。
而Step Into的意思就是说如果这一行上又是调动了什么函数的话,那么就进入那个函数题里。
Step Into可以在一句话上用好几次,如果你在那一句话上有好几个
函数调用的话,它会依照函数调用的顺序依次地进入函数。
我们可以按F10往下走,return,
然后这时候一步一步接下来往下,再输入一个tmp,然后这时候如果我们现在按 Step Over的话,就会进入下一行。
然后再进入,这时候还有 一个命令叫Step
Out,Step Out的意思就是说 让当前的函数执行完并返回,我们点一下Step
Out, 好,立刻回到刚才那一行了。如果我们再按Step Into的话是没有效果了,因为刚才这个函数已经执行完了。
这就是Step Into和Step Out,它是用于进入和跳出函数时所用的。
右下角有一个窗口,叫Call Stack,是调用堆栈的意思。
调用堆栈显示的是你程序当前执行的这一行在 程序执行的过程中所在的位置,它是用函数来表示的,
比如说在这里,我们可以看见我们在main函数的第17行,
如果我们进入到我们func函数里的话,就可以看见
这里,在调用堆栈里面多了一行,是在func函数,它现在告诉你我们在func函数的- 第5行。
我们Step Over就可以到第6行,这是调用堆栈,调用堆栈还有一个用法是你双击
你想跳转的位置,它可以显示那个函数被调用的位置,
并且如果你点开locals窗口的话,你可以看到所有的变量都会 显示为当前你双击的这个位置的值,
而不是在这个函数体里,因为在这个函数,func的函数体里,我们是没有tmp、i和r- eturn的。我们可以双击回去,
看一眼,我们只有一个t这么一个参数,作为一个局部变量, 但如果我们双击到main函数里的话,我们就可以在main函数这个作用域内,
当前的变量值。叫做立即窗口,immediate window,
这个窗口可以用来立刻执行一些语句。它在有些编译器中实现了有些编译器中没有实现。
比如说我们在这里可以直接给t赋一个新的值,比如说t=10.
来我们可以看见左下角,locals里面记的值就已经发生变化了。如果我们再step over,
继续往下走,直到这个函数跳出,我们看出现在return是0。当我们
这一行语句执行完之后,return就变成10了。也就是说刚才我们对t所进行的修改,- 确确实实影响到了程序的执行。
这就是立即窗口,它可以立刻执行一些语句,并且看它的结果。比如说,我们在这里还可以写
return==10,像做这种判断也是可以的。我们可以在这里面写各种各样的,
只要是符合C++语法的语句,并且让它立刻执行。
接下来,我给大家演示一下Netbeans底下应该怎么样调试程序。
跟Visual Studio底下一样,我们首先在
程序的行数前面点一下,它就会出现这么一个红色的断点。
然后,我们在这里设置一下。选运行, 设置项目配置,定制,然后我们在这里运行这里,
把控制台类型选成外部终端。因为在未装Cygwin的情况下,
没法使用内部终端进行调试,所以我们在这里选择外部终端。
然后点确定,点确定之后,我们就可以进行调试了。
点调试项目,这时候它就像Visual Studio一样,它会
弹出一个黑色的命令行窗口,然后在窗口里面我们就可以输入我们想要的东西。
我们把输入的文字复制一下。命令行窗口有一个
小技巧。对于windows用户来说,我们在标题这里点右键,点属性,打开快速编辑模式- ,点确定。
这时候我们按右键,就可以把刚才复制的东西给粘贴过来了。如果想在命令行
窗口里面复制别的东西的话,我们可以直接选中,然后点右键,这时候我们刚才
被选中的这些东西就会被复制到剪贴板里。这就是快速编辑模式的好处。
在输入数据时,快速编辑模式非常好用。我们可以不用每次打开命令行窗口都要
设置一下。我们可以直接打开默认值,把快速编辑模式勾选上,点确定就可以了。然后我们- 点回车,
这时候,我们发现我们的程序就在这里停住了。由于我们这个断点设置在一个变量说明上,这- 个变量说明并没有
什么实际的,实际需要执行的语句,所以它最后程序停在了它的下一句。
输入这个tmp,这个tmp在初始化之前,它是一个随机的数。我们往下走,
然后,我们像之前一样,这里有步入、
步出、步过,步过就是step over,步入就是step in,步出就是step out。
然后我么点步过,就可以看到我们的tmp变量就被复制
成了1,然后接下来进行各种各样的判断,使用方法跟Visual Studio差不多。
然后我们可以看到,局部变量在这里,变量这一栏,调用堆栈在这一栏。
然后,我们的输出,就是在这个黑色的窗口里。
跟Visual Studio很像。Netbeans里面并没有立即窗口。
最后我们来看Eclipse。
Eclipse的用法跟之前是一样的。但跟之前不同的是, 哎这里需要双击它,才可以增加一个断点,这个蓝色的小点。
然后我们点这个虫子,下面写的是debug,
然后它会问你是否是打开调试的
视图,我们点是就行了。在调试视图里,我们可以看见我们的变量,
然后我们可以看见我们的调用堆栈是在这里,然后我们的命令行窗口在这里,
在Eclipse里,监视窗口默认是关闭的。我们需要在windows这里打开。
window, show view,里面有一个expressions表达式这么一项,我们点开它,
这个实际上就是监视窗口。但跟它跟监视穿口不一样的地方,它是可以计算
一个值的。比如说在这里,比如我们现在属入了n,
那我们可以看到n的值是10,我们可以在这里输入表达式n==10, 回车,我们可以见他的计算结果是true。
虽然我们可以用它来计算表达式,但是我们并不能把它当作立即窗口来用。
比如说我们在这里输入n=20,回车,虽然返回来的结果是20, 但是如果把鼠标移到n这里的时候,我们发现他的值依然是10,并没有更改。
然后点这个红色的方块,就可以终止这个程序。