VC++ 6.0开发环境与程序测试与调试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
242
第13
章
VC++ 6.0开发环境及程序测试与调试 VC++ 6.0是Microsoft 公司推出的运行在Windows 操作系统中的交互式、可视化集成开发软件,它不仅支持C++语言,也支持C 语言。
VC++ 6.0集程序的编辑、编译、连接、调试等功能于一体,为编程人员提供了一个既完整又方便的开发平台。
本章主要介绍英文版Visual C++ 6.0开发C 语言程序的基本方法。
13.1 VC++ 6.0的主窗口界面
用鼠标依次单击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”,进入VC++ 6.0主界面窗口(以下简称VC 窗口),如图13.1所示。
VC 窗口由标题栏、菜单栏、工具栏、项目工作区窗口、输出窗口、编辑窗口、状态栏组成。
输出窗口
编辑窗口
图
13.1 VC++ 6.0的集成开发环境
图13.1 VC++ 6.0的集成开发环境
(1)菜单栏
菜单栏包含File (文件)、Edit (编辑)、View (视图)、Insert (插入)、Project (项目)、Build (建立)、Tools (工具)、Window (窗口)和Help (帮助)菜单项,每个菜单项下有对应的下拉子菜单。
选择菜单的方法与Word 等软件相似,可以用鼠标单击菜单项,也可以用键
.. .. ..
.专业资料.
盘操作,即同时按Alt 键和所选菜单的热键字母。
(2)工具栏
VC 提供了多种工具栏,在默认的情况下,工具栏显示Standard (标准工具栏)、Build MiniBar (小型编连工具栏)和WizardBar (向导工具栏),其中,WizardBar 与类有关,在此不予介绍。
在调试C 语言程序时,用得最多的是Standard 和Build MiniBar 。
Standard 工具栏中包含新建文本文件(
)、打开()、保存()、剪切()、复制()、粘贴()、查找(
)等十几个常用编辑工具。
Build MinBar 工具栏中包含编译(
)、建立项目()、执行()、断点设置(
)等多个编译、连接、调试工具。
VC 允许用户根据自己的爱好和习惯来设置工具栏,如显示或隐藏工具栏,在工具栏的空白处单击鼠标右键,然后在弹出的快捷菜单中选择相应的工具栏命令,如图13.2所
示。
(3)项目工作区窗口
项目也称为工程,VC 是以项目为单位来管理程序开发的,一个项目
是构成一个完整的程序所包含的所有源程序文件、资源文件和其他支持
文件的集合。
项目工作区窗口即是管理这些文件的界面,通过在该窗口
上的操作,用户可以调出任何在当前项目中的文件进行编辑。
在项目工
作区窗口中有“ClassView ”(类视图)、“ResourceView ”(资源视图)
和“FileView ”(文件视图)三个选项卡,其中FileView (文件视图)
显示当前项目中用到的所有文件。
(4)编辑窗口
编辑窗口用来显示和编辑头文件、源文件、资源等各种文件,是用户进行输入和编辑的主要区域。
(5)输出窗口
输出窗口主要输出有关编译和调试过程中的信息及结果,如错误的数量、错误可能的位置与大致原因等。
(6)状态栏
状态栏显示当前操作状态、文本光标所在的行列号等信息。
13.2 编辑C 语言源程序文件
运行一个C 程序,要经过编辑源程序文件(包括.c 和.h 文件)、编译生成目标文件(.obj )、连接生成可执行文件(.exe )和执行四个步骤。
下面介绍如何编辑一个C 语言源程序文件,包括输入、修改、保存等,其余三步以后介绍。
在编辑C 源程序文件时,主要使用File 和Edit 菜单。
File (文件)菜单主要用来对文件和项目进行操作,如图13.3所示,菜单中的命令分成了如下几组:
(1)New 、Open 、Close —创建新的文档、项目、工作区或其他文档等文件;打开已有的文件;关闭当前文件。
(2)Open Workspace 、Save Workspace 、Close Workspace —打开、保存、关闭工作区。
图13.2 工具栏设置窗口
C 语言程序设计 244
(3)Save 、Save as 、Save all —保存当前文件、另存当前文件、保存所有打开的文件。
(4)Page Setup 、Print —页面设置、打印当前文件。
(5)Recent Files 、Recent Workspaces —最近打开的文件、工作区列表。
(6)Exit —退出VC 。
Edit (编辑)菜单包括用于编辑或者查找的命令选项,如图13.4所示。
其中撤销、重复、文本的选定、剪切、复制、粘贴、删除等编辑操作类似于Word ,在此不再详述。
另外,也可以使用工具栏进行一些编辑操作。
图13.3 File 菜单 图13.4 Edit 菜单
(1)Find 、Find in Files 、Replace —在当前文件中查找指定的字符串、在指定路径下的多个文件中查找、替换指定的字符串。
(2)Go To 、Bookmarks —将光标移到指定的位置(如行、书签等)、设置/取消书签。
(3)Advanced —编辑的高级命令,如增量式搜索、用空格替换指定区域的TAB 符号等。
(4)Breakpoints —弹出Breakpoints 对话框,用于设置、删除和查看断点(有关断点概念在后面介绍)。
(5)List Members —在使用->或.调用类的成员时,弹出包含该类的所有成员的列表框,这时,只要键入成员的前几个字母就能从列表中选中该成员,按Tab 键即可完成输入操作。
也可以用滚动条找到要输入的成员名,然后双击它完成。
(6)Type Info —显示光标所在处的变量或者函数的定义或声明。
(7)Parameter Info —输入代码时,如果在函数名之后键入左括号,系统将显示该函数的完整原型,并用黑体显示其第一个参数。
输入完第一个参数后,接着会出现第二个参数,以此类推。
(8)Complete Word —表示系统自动完成当前语句其余部分的输入。
如果不能自动完成,则给出适当的提示帮助用户完成。
上面(5)~(8)是IntelliSense 技术的产物,目的是帮助用户减少因输入而产生的语法错误。
此外,单击Tool →Options 菜单命令,在弹出的对话框中选择Editor ,可以设置自动激活(5)~
(8)的操作。
.. .. ..
13.2.1 新建C源程序文件
新建C源程序文件可以采取两种方法。
方法一:
(1)在VC窗口,选择File→New菜单命令,弹出New对话框,如图13.5所示。
.专业资料.
C语言程序设计
246
图13.5 新建文件对话框
(2)选择New对话框上的File选项卡,并选择C++ Source File选项,建立C语言程序。
如
果选择C/C++ Header File选项,则将建立头文件,扩展名为.h。
(3)在对话框右半部分的Location(位置)文本框中输入或选择新文件的存储位置(假定为D:\TEST)。
(4)在File(文件)文本框中输入新文件的名称,例如“Pro1.c”。
在编写程序时,应根据程序的功能进行命名。
注意,Pro1.c 后面的“.c”后缀是必需的。
如果不写扩展名,VC系统自动创建扩展名为“.cpp”的C++程序。
(
5)单击【OK】按钮,回到VC主窗口,在编辑窗口看到光标闪烁,此时可输入和修改源程序。
例如,如图13.6所示,输入一个简单的程序。
可以看到关键字字体以蓝色显示,以区分其他标识符。
图13.6 编辑源代码
(6)选择File→Save菜单命令,或单击工具栏中的保存按钮、或按快捷键Ctrl+S 保存源程序文件。
方法二:
(1)在VC窗口,单击工具栏中的新建文本文件按钮,在编辑窗口生成一个文本文件,看到光标闪烁,可输入和修改源程序。
(2)在保存文件时,弹出“保存为”对话框,如图13.7所示,通过下拉箭头选择保存的位置,
.. .. ..
.专业资料. 在文件名文本框中输入文件名称,例如Pro1.c 。
注意,“.c ”后缀是必需的,否则保存的是文本文件(.txt )。
图13.7 保存C 源程序文件
13.2.2 编辑已存在的文件
对于已经存在的C 源程序文件打开后即可进行编辑,方法与Word 相似。
(1)打开文件。
在“资源管理器”或“我的电脑”中按路径找到已存在的C 程序(例如Pro1.c ),双击此文件名,自动进入VC 开发环境,并打开了该文件,程序显示在编辑窗口中。
也可以选择File →Open 菜单命令、或按快捷键Ctrl+O 、或单击工具栏中的Open 按钮
打开对话框,从中选择所需文件。
例如,二级C 语言等级考试时,在考试系统的答题菜单下选择试题文件名,自动进
入VC 开发环境,在编辑窗口中显示该试题的源程序文件。
(2)编辑文件。
可以使用Edit 菜单或者标准工具栏,对编辑窗口的活动文件(即当前文件)进行编辑操作,包括插入、删除、选定文本、复制等。
(3)保存文件。
编辑时,应经常保存,以免断电或程序未响应造成不必要的损失。
保存到原来的文件可以使用前面介绍的方法。
另外,也可以保存为新的文件名或者进行备份,方法是通过File 菜单中的Save As (另存为)命令,在弹出的对话框中指定保存的位置,输入新的文件名,单击【保存】按钮,编辑窗口的源程序文件就以新的文件名保存到磁盘(原文件仍存在)。
13.3 编译、连接和运行程序
编译的首要目的是检查源程序是否存在语法错误;其次,是对于没有语法错误的源程序,生成对应的目标文件(.obj )。
连接是将目标文件与系统提供的库函数等连接成一个可执行文件(.exe )。
在VC ++ 6.0的开发环境中,使用Build 菜单或相关的工
具栏对源程序进行编译、连接和运行。
Build 菜单如图13.8所示,
所包含子菜单的含义如下。
Compile Pro1.c —编译编辑窗口中的当前源代码文件,
Pro1.c 为当前源程序文件名。
Build Proc1.exe —编译、连接编辑窗口中的当前源代码
文件,生产可执行文件。
Rebuild All —重新编译、连接项目中的所有文件。
Batch Build —编译连接多个项目。
Clean —清除所有编译、连接过程中产生的文件。
图13.8 Build 菜单
C语言程序设计
Start Debug—开始调试程序。
Debugger Remote Connection—远程调试连接的各项环境设置。
Execute Proc1.exe—执行应用程序。
Set Active Configuration—选择活动项目的配置,如Win32 Release和Win32 Debug。
Configurations—设置、修改项目的配置。
Profile—启动剖析器。
剖析器是分析程序代码运行行为的工具。
利用剖析器提供的信息,可以找出代码中哪些部分是高效的,哪些部分需要更加仔细地加以检查。
13.3.1 编译
将上一节保存在D:\TEST文件夹下的Pro1.C在编辑窗口打开,编译的方法如下:
(1)单击工具栏上Compile按钮、或选择Build菜单栏中的Compile Pro1.c(编译Pro1.c)命令,编译系统进行编译,弹出图13.9所示的对话框,单击【是】按钮,表示同意由编译系统建立一个默认的项目工作区,并对源程序进行编译;单击【否】按钮,将不会对源程序进行编译。
图13.9 “是否建立一个默认的项目工作区”对话框
(2)若编译成功,则在VC输出窗口显示“0 error(s),0 warning(s)”,如图13.10所示。
“0 error(s),0 warning(s)”表示没有编译错误(error),也没有警告错误(warning),编译系统生成一个目标文件Pro1.obj,之后可以进行程序的连接与执行。
图13.10 成功编译后的输出窗口
(3)若编译有错,则在输出窗口显示错误信息。
按F4键、或双击错误提示行,在源程序出错行左侧出现标记,并且光标定位到此行。
此时,应检查标记所在行(可能会是标记前一行或多行)的程序代码,找出错误的原因并修改,然后再编译,若再出现错误,则再修改,直到编译通过为止。
编译工作能发现源程序中的错误分为两类,一类是源程序中的语法错误,在输出窗口用error 表示,编译系统不能为源程序生成目标文件。
另一类是轻微错误,如数据类型不匹配等,用warning (警告)表示,这类错误不影响生成目标程序和可执行程序,但有可能会影响运行的结果,也应改正。
总之,修改错误,使程序既无error,又无warning。
应注意的是,在程序编译时还可能会出现以下情况。
(1)编译系统给出的错误信息中错误的位置有时偏离。
如图13.11所示,程序中第4行末尾丢失分号,但系统给出的错误提示信息是第5行丢失分号,位置出现了偏离。
建议:在看到一个错误信息时,如果在其提示的行中没有发现错误,可适当地将搜寻围向前扩展。
248
.. ..
..
.专业资料.
(2)对于某个错误编译系统可能给出一系列连带的错误信息。
图13.11 错误位置的偏离 如图13.12所示,在程序第5行“printf(This is a program.\n ”);”中输出的字符串丢失左侧的双引号,只有一个错误,但系统给出的错误提示信息却是4个错误2
个警告,错误的数量出现了偏离。
在VC 的编译系统中,编译会从多个角度检测每个错误,如果从多个角度解释都有问题,则系统会提示有多个错误。
图13.12 错误数量的偏离
建议:在看到多个错误信息时,不要被错误数量吓倒,无需全部改掉后再编译,尝试着先改掉其中的一个错误,立即重新编译,错误信息可能大幅度减少。
13.3.2 连接
源程序编译成功后,就可进行连接了。
连接的方法是:单击工具栏上的Build 按钮
、或选择Build →Build Pro1.exe 菜单命令、或接快捷键F7对目标文件Pro1.obj 进行连接。
若连接成
功,则生成一个可执行文件Pro1.exe ,如图13.13所示。
C语言程序设计
250
图13.13 成功连接后的输出窗口
说明:在没有进行Compile时,也可直接使用Build菜单的Build菜单命令,因为该命令包含编
译。
13.3.3 运行
程序连接成功并生成可执行文件.exe后,就可以运行程序。
程序运行的方法是:单击工具栏上的Execute
按钮、或选择Build→!Execute Pro1.exe菜单命令、或按快捷键Ctrl+F5。
运行后产生图13.14所示的结果输出窗口。
最后一行“Press any key to continue”并非程序的输出,而是VC在输出完运行结果后由系统自动加上的一行信息,告知用户“按任意键继续”。
当按下任意键后输出窗口消失,回到VC 窗口,可继续对源程序进行修改、补充或其他的工作。
注意:程序编译后又做了修改,如果直接运行,将会弹出图13.15所示的对话框,单击【是】按钮,系统将自动对程序进行编译、连接并运行。
图13.14 运行结果图13.15 重新编译源程序
13.4 建立和运行多个文件的方法
一个完整的C程序可能包含一个或多个程序文件,包括源程序文件(扩展名为.c)、头文件(扩展名为.h),由项目(project)文件进行管理,所以一个项目文件(.dsp)对应一个应用程序。
项目文件是放在项目工作区中并在项目工作区的管理之下工作的,因此需要建立项目工作区(workspace)。
在编译程序时必须有一个项目工作区,如果用户未指定,系统会自动建立工作区(扩展名为.dsw),并以文件名作为工作区名(如前所述,源程序编译时系统自动建立了工作区)。
建立项目工作区有两种方法:一种是由用户建立项目工作区和项目文件;另一种是用户只建立项目文件而不建立项目工作区,由系统自动建立项目工作区。
下面介绍创建项目文件并自动创建工作区的方法。
(1)用前面介绍过的方法分别编辑好同一程序中的各个源程序文件并存放在指定的目录下。
例如,下列Pro2.h、Pro2-1.c和Pro2-2.c保存在D:\TEST子目录下。
Pro2.h中的容:
int max(int x,int y); //声明函数
Pro2-1.c中的容:
int max(int x,int y) //求最大值函数
{
int m;
.. .. ..
if(x>y)
m=x;
else
m=y;
return(m);
}
Pro2-2.c中的容:
#include<stdio.h>
#include"Pro2.h"
main() //主函数
{
int a,b,imax;
printf("please input two datas a,b: ");
scanf("%d%d",&a,&b);
imax=max(a,b); //调用求最大值的函数
printf("\n Maximum is %d\n",imax);
}
(2)选择File→New菜单命令,弹出New对话框。
单击对话框上部的Projects(项目)选项卡,如图13.16所示,在列表框中选择Win32 Console Application(Win32控制台应用程序)。
在Location文本框中输入项目文件的位置(如D:\TEST),在Project name文本框中输入项目名(如Pro2),单击【OK】按钮,弹出Win32 Console Application对话框,如图13.17所示。
图13.16 新建项目对话框
(3)在弹出的Win32 Console Application对话框中选择An empty project单选项,然后单击【Finish】按钮,弹出New Project Information对话框,如图13.18所示,单击对话框中的【OK】按钮,回到VC窗口。
.专业资料.
252
图13.17 Win32控制台应用程序向导对话框 图13.18 新建项目信息对话框 (4)在VC 窗口中Workspace 窗口的下方单击File View 选项卡,窗口显示“Workspace ‘Pro2’: 1 Project (s )”,表示工作区Pro2中有一个项目文件,其下一行为“Pro2 files ”,表示项目文件Pro2中的文件现其为空,如图13.19所示。
(5)选择Project →Add To Project →Files …命令,出现图13.20所示的对话框,在本例中,将源程序文件放到项目文件中。
找到并选中Pro2.h 、Pro2-1.c 和Pro2-2.c ,单击【OK 】按钮,将选中的三个文件添加到项目中。
此时,回到VC 主窗口,再观察Workspace 窗口,可以看到项目文件Pro2中包含了源程序文件Pro2-1.c 、Pro2-2和Pro2.h ,如图13.21所示。
(6
)选择Build 菜单中的Build Pro2.exe 命令,系统对项目中的所有文件进行编译和连接,在输出窗口会显示编译和连接的信息。
图13.19 新建项目工作区窗口 图13.20 添加文件 (7)选择
Build 菜单中的Execute Pro2.exe
命令,弹出程序运行窗口,输入12 45后按回车键,程序运行结果如图13.22所示。
图13.21 项目工作区 图13.22 运行结果
.专业资料.
13.5 程序测试与调试
程序测试和程序调试也是编写程序中很重要的一部分,程序测试的主要任务是找出程序中的错误;程序调试则主要是消除程序中的错误。
程序测试和程序调试往往是交叉进行的,当程序测试有错误时,就需要对程序进行调试,然后调试通过后再进行测试,直到程序达到预期的功能。
13.5.1 程序测试
程序测试的目的是为了暴露程序中存在的错误或缺陷而执行程序的过程,不要抱有“程序运行无误就说明程序没有错误”的思想。
测试是为了发现程序的错误,而不是证明程序无错。
测试程序时首先需要准备一些数据(测试用例)。
设计测试用例时,应当清楚相应的输出结果是否正确,而且测试用例应包括合理的输入数据和不合理的输入数据。
根据选用测试用例的不同分为黑盒测试和白盒测试。
黑盒测试是指程序对测试者来说是完全透明的。
测试者不考虑程序的部结构和特性,只根据程序的功能等外部特性来设计测试用例。
对程序部结构不了解时,使用这种方法为好。
白盒测试是指将测试对象看作一个打开的盒子,测试人员利用程序部的逻辑结构及有关的信息来设计或选择测试用例。
一般程序设计人员多采用这种方法。
在选择测试用例的时候应该遵循以下三个覆盖原则:
(1)语句覆盖。
选择足够多并且合适的测试用例使得每一条语句都能够被执行;
(2)分支覆盖。
选择测试用例集使得每一个条件都出现真和假两种情况;
(3)子句覆盖。
因为通常一个条件语句有可能会包含多个条件子句,那么子句覆盖就是让条件语句中包含的每一个条件子句都出现真和假两种情况。
下面用一个例子来说明黑盒测试和白盒测试。
编写程序计算下面的函数,假设x 为整型,要求输入x 的值,输出y 的值。
x (x <1) y =2x -1 (1x <10)3x -1 (x 10)≤≥⎧⎪⎨⎪⎩
编写程序如下:
#include<stdio.h>
main()
{
int x,y;
printf("Input x: ");
scanf("%d",&x);
if(x<1)
{
y=x;
printf("x=%3d,y=x=%d\n",x,y);
}else if(x<=10)
{
y=2*x-1;
printf("x=%3d,y=2*x-1=%d\n",x,y);
}else
254
{
y=3*x-1;
printf("x=%3d,y=3*x-1=%d\n",x,y);
}
}
1.黑盒测试
首先,采用黑盒测试,分两种情况选择测试用例。
(1)非法输入。
如输入一个非数字字符,程序能运行,但结果不对,说明程序不能检测出非
法输入,对本例来说无影响,但实际工作中是不允许的。
Input x:a↙
x=-13108,y=x= -13108
(2)临界值输入。
分别输入1和10,运行情况如下。
①Input x: 1↙
x= 1,y=2*x-1=1 (结果正确)
②Input x:10↙
x= 10,y=2*x-1=19 (结果错误)
显然,在测试用例为x=10时,程序的运行结果是错误的,正确结果是y=3*x-1=29,说明程序判断有问题。
将“else if(x<=10)”中的“=”去掉,再测试,则结果正确。
2.白盒测试
采用白盒测试方法时,根据程序的逻辑结构,共有以下三种情况。
(1)x<1时:
Input x: 0↙
x= 0,y=x=0 (结果正确)
(2)1≤x<10时:
Input x: 5↙
x= 5,y=2*x-1=9 (结果正确)
(3)x≥10时:
Input x: 20000↙
x=20000,y=3*x-1= 59999
以上是程序测试的初步知识。
对于一些复杂的程序,测试起来会更麻烦。
读者应当多积累经验,学会合理组织测试数据,并根据测试结果修改、完善程序,即调试程序。
13.5.2 程序调试
程序调试对于程序设计来说是一个非常关键的环节,程序应经人工检查无误后,再上机调试。
最简单的程序调试是根据编译或连接的出错信息,找出程序中出错之处。
这种调试主要是针对语法进行的,只要理解各类出错信息的含义(后面给出了常见编译出错信息,供参考),调试起来并不困难,在此不再赘述。
下面介绍另一种调试情况。
如果程序无编译和连接错误,但经测试后,发现程序运行结果不正确,则可使用VC提供的动态调试程序的功能找出问题所在。
在VC中每当建立一个项目(Project)时,VC都会自动建立两个版本:Debug版本和Release版本,正如其字面意思所说的,Debug版本是在开发过程中进行调试时所用的版本,而Release版本是当程序完成后准备发行时用来编译的版本。
默认情况下,Debug版本中包含调试信息,且不进行任何代码优化;而Release版本不包含任何调试信息,并对可执行程序的二进制代码进行了优化。
若要选
择Release版本进行调试,需要进行一些设置(Project菜单中的Setting命令),使其包含调试信息,否则是不能进行调试的。
为方便起见,本书使用VC默认选择的版本,即Debug版本进行调试。
1
.调试的一般过程
这里所讲的调试,就是在程序运行过程的某一阶段观测程序的状态,而一般情况下程序是连续运行的,所以必须使程序在某一地点暂停下来,这个地点就是断点。
在开始调试前,应保证程序编译连接无错误。
在调试的过程中,首先要做的就是在程序的关键行处设置断点;其次,使用Go菜单命令再运行程序,使程序在断点处停下来,并观察程序的状态。
程序在断点停下来后,有时需要按用户的要求控制程序的运行,以进一步观测程序的流向。
下面依次介绍断点的设置、调试器的启动以及如何控制程序的运行。
2.设置断点与删除断点
断点是VC调试器设置的一个代码位置,是最常用的调试技巧。
调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。
断点分为位置断点、数据断点和消息断点,下面主要介绍位置断点和数据断点的设置。
(1)位置断点的设置与删除。
在源代码编辑窗口,将插入点移到要设置或删除断点的行,单击工具栏(Insert/Remove Breakpoint)按钮、或按快捷键F9就可设置一个断点,此时编辑窗口左侧有一红色实心圆作为标识。
例如,对上面测试时举的例子设置两个断点,如图13.23所示。
如果该行已经被设置为断点,则再按F9键该断点被删除。
一个程序中可以设置多个断点。
用上面的方法设置的位置断点有时作用有限,可以利用Breakpoints对话框设置附加的条件,这种有条件的位置断点在有些文献中称为条件断点。
打开Breakpoints对话框的方法是按快捷键Ctrl + B或Alt + F9,或者选择Edit→Breakpoints菜单命令,如图13.24所示。
这个对话框下部显示设置了两个断点(第7行和14行),单击其中一个,则在Break at文本框显示出来,并且可单击Condition按钮为断点设置一个表达式。
当这个表达式发生改变时,程序就被中断。
图13.23 设置断点图13.24 Breakpoints对话框(2)数据断点的设置与删除。
程序调试过程中,有时会发现一些数据会莫名其妙地被修改(如一些数组的越界写导致覆盖了另外的变量),利用数据断点可以快速定位何时何处数据被修改。
数据断点的设置与删除只能在Breakpoints对话框中进行,选择Data选项卡,显示设置数据
.专业资料.
256
断点的对话框。
在编辑框中输入一个表达式,当这个表达式的值发生变化时,数据断点就到达,程序停在相关语句处。
删除数据断点的方法是,在该对话框中选择一个数据断点,然后单击Remove 按钮即可。
(3)消息断点的设置与删除。
消息断点是为VC 对Windows 消息的截获提供的。
设置与删除也是通过在Breakpoints 对话框中选择Messages 选项卡进行,因与本书无关,在此不再赘述。
3.启动调试器
选择工具栏go 按钮,或Build →Start Debug 菜单中的Go 、Step Into 或Run to Cursor 等命令,均可启动调试器,进入调试状态。
调试器提供一系列窗口,用于显示不同的调试信息,可以借助View 菜单下的Debug Windows 子菜单访问它们。
当启动调试器后,VC 开发环境的Build 菜单自动改为Debug 菜单,并且自动显示出Variables 和Watch 两个调试窗口,这两个窗口的作用如下。
(1)变量窗口
图13.25所示是Variables (变量)窗口。
随着程序的运行这个窗口会跟着变化,可以通过该窗口了解到程序中的变量状态。
(2)观察窗口
图13.26所示是Watch (观察)窗口。
对于变量比较多的程序,可以在 Watch 列表中输入需要监控的变量名。
如果需要可以在Value 列中重新指定这些变量的值。
4.控制程序运行
在工具栏空白处单鼠标右键后选择Debug 工具栏选项,弹出调试快捷窗口,集中所有的调试命令按钮,如图13.27所示,常用调试命令按钮功能如表13.1所示。
图13.25 Variables 窗口 图13.26 Watch 窗口 图13.27 Debug 快捷窗口
表13.1
常用调试命令功能表 子 命 令
快 捷 键 功 能 Go
F5 运行程序至断点、或程序结束 Restart
Ctrl+Shift+F5 重新载入程序,并启动执行 StopDebugging
Shift+F5 关闭调试会话 Break
从当前位置退出 Step Into
F11 单步执行,并进入调用函数 Step Over
F10 单步执行,但不进入调用函数 Step Out
Shift+F11 跳出当前函数,回到调用处 Run to Cursor
Ctrl+F10 运行至当前光标处 Variables
显示或隐藏程序变量窗口 Watch 显示或隐藏查看窗口
以上介绍的调试方法的具体应用请参看第14章。