您的位置:首页 > 编程语言 > C语言/C++

vc++6.0单步执行

2016-12-06 17:37 316 查看
在VC++6.0中的单步调试: 
调试重要的几个键: 
F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点. 
F5调试状态运行程序,程序执行到有断点的地方会停下来. 
F10单步执行程序. 
CTRL+F10运行到光标所在行. 
F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面. 
SHIFT+F11跳出当前所在函数. 
步骤: 
1,保存为c或c++文件 
2,根据断点调试找到错误处。 
3,采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数盗用,f11是进入函数体调试。一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。
4,在调试过程中,肯定得监视程序中的变量。在vc6.0的右下角有一个watch窗口,专门用来设置监视变量。具体怎样设置自己体会吧。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值
5,vc6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。右键——〉在debug(或调试)选择项的勾

 本篇文章为大家简单介绍如何使用VC++6.0的Debug来设置断点,进行单步调试。熟练使用Debug单步调试后,你找出并改正bug的速度和效率将大大提高,所谓磨刀不误砍柴工呀!

相信大家对谭浩强童鞋都不陌生,想当年,是他引领我们步入了C的殿堂,我们从他那里学会了如何写代码,他却没有教我们如何Debug,而我们伟大的老师,也对此只字不提。相信很少有人可以一次性写出完全正确的代码。对于我们这些个菜鸟来说,写出不带bug的代码倒是一件很不正常的事情。也许你知道有Debug这么个东西,但却不知道该怎样用;也许你还停留在在代码中添加N个printf来输出查看到底是哪里出了问题;也许……总之,经验表明,你花费时间看完这篇文章并学会简单的使用Debug,绝对不是浪费时间!

废话少说,进入正题:

编译0 error(s), 0 warning(s)

链接0 error(s), 0 warning(s)

当你按捺不住激动滴心情点击运行后,发现结果并不是你想要的结果……郁闷了。然后你在代码中加了n条printf来查看 变量的结果……n多循环……运行,再加printf,again and again……终于,要抓狂了……

好吧,同学,如果你会用Debug,也许你不用这么纠结。

下面通过一简单例子说明如何使用Debug的一些“基本”(我也只是刚入门的小菜鸟,高级的修行要靠自己的了)功能:

写了如图中的一个简单程序,编译链接都没有错误,运行结果却不理想(不正确)

需要指出的是,主函数不要再用void
main()了,这种只有在你学的环境才不会出错,到别的(linux编译器)地方编译是通过不了的。main函数必须要有返回值,如写成int main()在函数结尾时加一个return 0;,这样,所有编译器都不会报错了。





 最终结果确定是逻辑错误,如果不用单步调试,很难找出这种错误的。

这里先提到一个断点的概念,顾名思义,既是在你需要的地方让它断开,如果你在某一行代码处添加了断点,那么程序运行到断点处即会暂停,不再继续往下运行,直到接到你继续运行的命令。

对上边示例的程序,在你感觉可能有问题的地方添加断点(按快捷键F9或者点击图中小手按钮),以便运行到断点处好查看运行状态。

值得注意的是,主函数调用的函数,只当作一步,如果你需要检查被调用的函数有没有问题,那么你需要在被调用的函数中添加断点,这样才能一步一步执行被调函数。

2012-07-21更新:上边划掉的部分以前就发现有点没解释清楚,一直没来得及更正。现更正下

之前只知道一个F10,所以解释成了遇到函数会认为是一步直接过去{ } ,得到返回结果。其实可以从调试的菜单中看到,F10是step over ,意思就是跳过{ } 图标上也有形象的表示,仔细看还有一个F11  是 step into,即进入{ } 内的意思,这下就可以解释清楚了为什么会跳过去,还有其它的更多的快捷键,需要大家自己研究了,常用的也就这几个吧。




 在需要的地方添加完断点后(其实,在每个函数第一个需要停下来的地方添加断点就可以了,剩下的地方都可以用F10单步执行,某些已经验证过正确的函数,就不需要每次进行单步查看了  验证过的函数等可以按F10
跳过,想要进入其内部可按F11……)

添加完断点,按F5或者下图中的调试按钮,即可出现调试界面。如下图所示。同时出现的还有一个黑色的窗口,相信你不陌生,在某些需要输入数据的地方,可以在那个黑色窗口中输入。




 图中箭头所指的既是当前要运行的位置。左下窗口动态显示参与当前行运行的变量及其值,运行是变量值发生改变的会用红色标出。右边窗口中,你可以输入要查看的变量,它将一直显示在那里,等于是对左边动态显示的一个补充吧,对需要长期监视的变量很有用。

F10即可进行单步运行,每按一下执行一步。你可以观察每一步,每个变量的状态。




 观察一圈发现,i的值总是大于j的,而第三重循环for(k=i;k<j ;k++)是永远无法进入循环的。因此找到了问题的症结,该怎么改,就看程序设计的初衷了。




 像这种逻辑错误,不用单步调试,很难发现。即使用Debug也需要很长时间和耐心才可以找到,因此,我们编程时应该尽量避免这种逻辑上的错误出现。

调试过程中你可以直接修改代码,下一次运行到这里会按新的代码执行。调试完成想要退出Debug,你会发现,关那个黑窗口并不好使。直接在调试菜单中选择Stop
Debugging吧,这样才会安全退回到你原来的编辑界面。




 

 罗哩罗嗦一大堆,不知道你是否看明白了。也许明白的人也被我给说糊涂了。如果你看了这篇文章,感觉有些作用或者感觉很垃圾或者你有什么建议,都期待你能留下些什么……这是一个帮我改正错误的一个很好的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: