VC++6.0调试工具使用初步
【摘要】程序设计初者学会IDE(集成开发环境)中提供的调试工具,是一件非常重要的事。本文在初学者有初步的程序设计体验(只需要掌握到控制结构)为前提,介绍了单步执行、断点设置及观察程序运行情况的方法,并配有练习的建议,方便读者的学习。
在编写程序中,尤其是完成一个工程的过程中,通过编译的程序往往也会存在错误(bug)。这种错误是运行错误和逻辑错误,比语法错误更隐蔽,更危险。
如何找出这些错误?在冗长的代码中,找出这些错误来并不总是一件容易的事。排错(debug)是一件程序员不得不面对的麻烦事,但真正的程序员会把与bug战斗当成自己的神圣使命。
调试程序是程序员应该具备的基本能力。在学习编写程序过程中,学会调试程序是最实用的技能之一。可以纯粹依靠人工,一行一行,或一块一块地检查,思考,很累人。也可以像现有的各种教材及课堂教学中介绍的,输出变量及中间变量(用输出语句cout<<...;),以观察运行结果及运行的中间结果。这种方法简洁方便,但增加了写代码的维护量,同时,有时并不能方便地找到问题所在。
在实际的工作中,调试工作常用IDE(集成开发环境,如VC++6.0)提供的工具进行。本文旨在指导同学们初步学会利用VC++6.0调试程序的方法,学会单步运行程序和使用断点的方法,并在过程中观察运行环境(最重要的是变量)的变化,从而在今后能够高效地完成程序的调试。
一、认识调试功能
在组建(build)菜单中,点击开始调试(start debug),在其下级子菜单中,包含了启动调试器运行的各项子命令(如图1所示)
图1 开始调试菜单
各子命令及其功能如下:
Go:从程序中的当前语句开始执行,直到遇到断点(后面讲)或遇到程序结束。Step Into:控制程序单步执行,并在遇到函数调用时进入函数内部。Run to Cursor:在调试运行程序时,使程序运行到当前光标所在位置时停止,相当于设置了一个临时断点。
二、单步调试代码
利用图1菜单中的Step into功能或按F11键,进入单步调试状态,有一个箭头指向程序的第一行,每按一次F11键,程序再向前执行一行语句,如图2所示。
图2 开始调试后的界面
我们对图2的界面进行观察。
首先,菜单中增加一个调试(debug)菜单,如图中①处,下面是菜单中的部分功能(鼠标浮到上面时,会有提示,请试一试。)其次,和当前正在执行的语句相关的变量,以及其当前的值显示在了②处。
再次,黄色箭头代表了正在执行的位置。
【练习1】
下面,针对求1+2+3+...+100的程序,体验单步执行。步骤:提示:Step Over(F10)和Step Into(F11)的区别将在学习函数后更加明确,需要跟踪自定义函数内部代码时,用Step Into(F11),不需要跟踪时,就Over过去了。
【练习3】将光标置于程序中某一语句上,用Run to Cursor(快捷键CTRL-F10),看看发生什么现象——直接执行到了光标处!这是一种快速观察的方法。(PS:本练习受1楼博友留言启发加上,表示感谢。)
设置了断点的程序行前会出现一个黑色的实心圆圈。
取消断点用同样的按钮和菜单。1.
#include <iostream>using namespace std; int main() {int number=1024,digit;do{digit=number%10;number=number/10;cout<<digit;} while(number>0);cout<<endl;return 0;}
【实践2】选择一个你以前做的程序,请你的同学在你的程序中作两处改动,使其可能会造成逻辑错误(如两数交换的程序中将a=b;和b=t;两条语句换一下顺序),你利用自己的思考和调试工具将程序改正过来。