VC6.0+程序调试方法
VC++ 6.0开发环境与程序测试与调试
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 工具栏中包含新建文本文件()、打开()、保存()、剪切()、复制()、粘贴()、查找()等十几个常用编辑工具。
vc++6.0调试方法(附有快捷键)
调试程序可以帮助了解程序是怎样运行的。
1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting…->Project Settings对话框,选择Release状态。
“C/C++”标签页中的Category选General,Optimizations选Disable(Debug),Debug info选Program Database。
在“Link”标签页中选中Generate debug info复选框。
注:只是一个介乎Debug和Release的中间状态,所有的ASSERT、VERIFY都不起作用,函数调用方式已经是真正的调用,而不查表,但是这种状态下QuickWatch、调用队列跟踪功能仍然有效,和Debug版一样。
3、Release和Debug有什么不同。
Release版称为发行版,Debug版称为调试版。
Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。
Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。
Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll),比如MFC42.DLL。
这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。
而Debug版本的exe链接了调试版本的MFC DLL文件,如MFC42D.DLL。
在没有安装Visual C++6.0的机器上不能运行,因为缺MFC42D.DLL等,除非选择use static dll when link。
4、ASSERT和VERIFY有什么区别ASSERT里面的内容在Release版本中不编译,VERIFY里面的内容仍然编译,但不再判断真假。
所以后者更安全一点。
使用VC6.0调试程序
结构体类型的定义
struct 结构体类型名 { 类型标识符 成员名1;
类型标识符 成员名2; ……
类型标识符 成员名n; };
如: struct student { char name[10];
long id; char gender; int age; }
注意: struct student 应作为一个类型整体, name[10]、id、gender、age都是其成员。 struct及花括号后的“;”不能省。
a
因此,在C语言中,将地 址形象化地称为指针
2012 35
b
….
2010 p
2012 q
定义一个指针变量
指针变量的定义一般形式为:
基类型 *指针变量名;
例如: int i, j, *pi, *pj; float x, y, *p1, *p2;
指针变量的赋值:使得指针变量指向变量 指针变量名=&变量名;
设有一个函数process,在调用它时,每次实现不同的功 能。输入a和b两个数,第一次调用时找出a与b中的大者,第
二次找出小者,第三次求和。
#include<stdio.h> void main() {int max(int,int); int min(int,int); int add(int,int); int process(int, int, int (*fun)()); int a,b; printf("enter a and b:"); scanf("%d%d",&a,&b); printf("\nmax="); process(a,b,max); printf("\nmin="); process(a,b,min); printf("\nsum="); process(a,b,add); }
VC6.0调试方法
VC6.0调试⽅法
1.打开你要调试代码的⼯作空间。
2.按快捷键F5或点击以下图⽚上标记的图标进⼊调试模式。
3.打开调试⼯具条,⼀般情况下当你按F5键后会⾃动弹出,如果没有弹出的话,右击⼯具栏空⽩处,会弹出下图,选中调试,就会出现调试⼯具条。
4.接下来,在监视窗⼝中添加你要监视数据变化的变量。
5.按F11逐语句的调试代码,如果某⼀语句是⼀函数,你不希望进⼊该函数时,F10逐过程来查看,在代码的调试过程中,通过监视窗⼝查看变量值的变化,从⽽确定代码是否有问题。
6.如果希望跳出某⼀函数时,按快捷键Shift+F11,或者直接点击调试⼯具条上的按钮就可以跳出该函数了。
7.如果只是希望调试某⼀部分代码的话,可以设置断点来调试,调试⽅法如上,只是在要调试的代码之间⽤断点来分开。
设置断点时,光标放在你要设置断点的那⾏,按F9或点击编译微型条上⾯的类似⼿状的按钮即可。
VC6.0中如何调试程序说明大全
设置断点
将光标放到需要设置断点的行
设置断点
点击按钮
断点设置好
VC++程序调试演示
• 程序调试概述 • Debugger工具栏简介 • 启动Debugger • 变量跟踪 • 设置断点 • 快速执行到一个断点 • 结束Debugger • 快速查看变量类型
快速执行到一个断点
点击按钮
快速执行到断点设置行
* 选中Breakpoint对话框中的DATA标签,对应的页面将会弹出
* DATA页面中的Expression编辑框中写出逻辑表达式,如(X==3);
2、监视表达式发生变化断点: * 从EDIT 菜单中选中breakpoint命令,屏幕 上将会出现Breakpoint对话框。 * 选中Breakpoint对话框中的DATA标签,对 应的页面将会弹出。 * 在Expression编辑框中写出需要监视的表 达式。 * 最后按OK键返回。
4 控制程序的运行
从菜单Build到子菜单Start Debuging 选择Go程序开 始运行在Debug状态下,程序会由于断点而停顿下来后, 可以看到有一个小箭头,它指向即将执行的代码。按要求 来控制程序的运行,其中有四条命令:Step over, step Into , Step Out ,Run to Cursor。Leabharlann Debugger工具栏简介
(SHIFT+F11)确认当前子程序中没有程序错误时,该选项可 以快速执行该子程序,并停留在子程序后面的语句
Debugger工具栏简介
(CTRL+F10)快速执行到光标所在的代码处
Debugger工具栏简介
(SHIFT+F9)显示QuickWatch窗口,在该窗口可以计算表达 式的值
VC++6.0中如何编译运行及调试C语言程序
VC++6.0中如何编译运行调试C语言程序1.启动VC++6.0 (如下图)2.单个源文件的编译运行例如下面的源代码#include<stdio.h>void main(){ int i,sum=0;for(i=1;i<=10;i++){sum=sum+i;}printf("sum=%d\n",sum);}打开VC++6.0,如图1所示(图1)选择“文件”→“新建”,打开如图2所示(图2)选择“文件”项,如图3所示(图3)选择“C++ Source File”项,并在“文件名”项目下输入“sum.c”如图4所示(图4)单击“确定”,打开如图5所示(图5)输入如上源代码,如图6所示(图6)选择按编译按钮调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮检查连接(多文件工程时常用,检查文件间是否正常连接)。
(图7)在下端的输出窗口会有错误和警告的提示,如果没有错误选择“执行”(或按Ctrl+F5组合键)即可出现运行结果,如图8所示(图8)3.多个源文件的编译运行以上是运行单个源文件的情况,但是在程序设计时,往往是由几个人各自独立编写不同的程序,显然这些程序是不能写在一起进行编译的,这时就需要建立项目工作区来完成几个独立程序的编译,具体方法如下。
首先建立两个文本文件,分别命名为“file1.c”和“file.c”,分别在两个文件中输入如下两个源代码,然后保存。
源代码1:#include<stdio.h>void main(){void sum();sum();}源代码2:#include<stdio.h>void sum(){int i,sum=0;for(i=1;i<=10;i++){sum=sum+i;}printf("sum=%d\n",sum);}打开VC++6.0,选择“文件”→“新建”打开如图9所示(图9)选择“工作区”项,并在“工作空间名称”项目下输入“sum”如图10所示(图10)单击“确定”,打开如图11所示(图11)在左侧的“工作区窗口”显示了新建立的工作区选择“文件”→“新建”打开如图9所示,在“工程”项目下选择“W in32 Console Application”项,并在“工程名称”项目下输入工程名称,如“sum”,选择“添加到当前工作空间”项,如图12所示(图12)单击“确定”,打开如图13(图13)选择“一个空工程”项,单击“完成”,打开如图14所示(图14)单击“确定”,打开如图15所示(图15)在左侧的“工作区窗口”显示了新建立的工程选择“工程”→“添加到工程”→“文件”,打开如图16所示选择刚刚创建的两个文件,单击“确定”,打开如图17所示选择“组建”→“组建”(或按F7键),打开如图18所示(图18)在下端的输出窗口会有错误和警告的提示,如果没有错误选择“组建”→“执行”(或按Ctrl+F5)即可出现运行结果,如图19所示(图19)4.如何快速地规范代码缩进格式选中所需要规范的代码,按Alt+F8。
VC++6.0调试方法大全
一、调试基础调试快捷键F5:开始调试Shift+F5: 停止调试F10:调试到下一句,这里是单步跟踪F11:调试到下一句,跟进函数内部Shift+F11: 从当前函数中跳出Ctrl+F10: 调试到光标所在位置F9:设置(取消)断点Alt+F9: 高级断点设置跟踪调试1、尽量使用快捷键时行调试2、观察调试信息3、高级中断设置异常调试重试->取消->调试函数堆栈,用variables或者call stack 窗口Release调试1、经常测试你的Debug和Release版本2、不要移除调试代码,如用ASSERT, TRACE等。
3、初始化变量,特别是全局变量,malloc的内存,new的内存4、当你移除某个资源时,确保你移除了所有跟这个资源相关的申明(主要是在resouce.h文中)5、使用3或者4级的警告级编译你的代码,并确保没有警告,project->setting->c/c++->warninglevel(中文版是项目->属性->C/C++->常规->警告等级)6、_debug改成NDEBUG进行调试,project->setting->C/C++->Preprocessordefinitions(中文版是项目->属性->C/C++->预处理器->预处理定义)(这里是debug和Release编译的重要不同之一)7、在Release中调试源代码,project->setting->C/C++->debug info选择programDataBase (中文版是项目->属性->C/C++->常规->调试信息格式->用于“编辑并继续”的程序数据库),project ->setting->link选上Generate debug info(中文版是项目->属性->链接器->调试->生成调试信息)8、走读代码,特别关注堆栈和指针二、TRACE宏当选择了Debug目标,并且afxTraceEnabled变量被置为TRUE时,TRACE宏也就随之被激活了。
VC++ 6.0开发环境与程序测试与调试
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 工具栏中包含新建文本文件()、打开()、保存()、剪切()、复制()、粘贴()、查找()等十几个常用编辑工具。
vc6.0调试技巧
/Zi
Program Database
创建一个程序库(PDB),包括类型信息和符号调试信息。
/ZI
Program Database for Edit and Continue
除了前面/Zi的功能外,这个选项允许对代码进行调试过程中的修改和继续执行。这个选项同时使#pragma设置的优化功能无效
Life is like a box of chocolate, you never know what you are going to get.
二、调试的一些技巧
1、使用ASSERT和VERIFY(原则:尽量简单)
ASSERT:它接收一个表达式,如果这个表达式为TRUE,则无动作,否则中断当前程序执行。对于系统中出现这个宏导致的中断,应该认为你的函数调用未能满足系统的调用此函数的前提条件。例如,对于一个还没有创建的窗口调用SetWindowText等。
vc6.0调试技巧
一、基本的调试设置
1、CTRL+F10:运行到当前光标处 DEBUG模式下 用F9在要看的语句上打好断点,F5调试运行,F10单步运行。
2、设置
为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建的工程中包含的Debug Configuration自动包含调试信息,但是是不是Debug版本并不是程序包含调试信息的决定因素,程序设计者可以在任意的Configuration中增加调试信息,包括Release版本。
LocalFree( lpMsgBuf );
LPVOID lpMsgBuf;
但是也要注意:由于用GetLastError插得代码七零八碎。在Watch窗里使用变量@err时就可以立即看到当前的LastError码。
Visual_C++_6.0调试
控 制 程 序 的 运 行
查 看 工 具 的 使 用 | 变 量 窗 口
查看工具的使用-观察窗口
观察窗口(WATCH WINDOW) 在View 菜单,选择Debug Windows 命 令的Watch 子命令。这时观察窗口将出 现在屏幕上。
查 看 工 具 的 使 用 | 观 察 窗 口
在上图的观察窗口中双击Name栏的某一空行,输入你要查看的变量名或表达式; 回车后你将会看到对应的值。
调试的一般过程
第一项工作就是设立断点(用F9设置断点); 其次再按(F5)调试程序
设置位置断点
最简单的是设置一般位置断点: 按快点表示这里设立了一个断点。
设置位置断点-图示
控制程序的运行
F11: Step Into F10:Step over 设置了很多断点的时候,F5调试程序好像更 好用一点
Visual C++ 调试
使用调试工具能够快速的帮助你找到错误 和查看程序运行的具体情况,你会发现找错 是小菜一碟.
认识工具条:调试
Step into Stop Debug Restart Debugger Disassembly Call stack Watch Registers Variables Memory Step out Step over Run to cursor
查看工具的使用
观察窗口可有多页,分别对应于标签 Watch1,Watch2,Watch3和Watch4。 假如你输入的表达式是一个结构或是一个 对象,你可以用鼠标点取表达式右边的形 如 + ,以进一步观察其中的成员变量的 值。
控制程序的运行
Step over :运行当前箭头指向的代码(只运行 一条代码); Step Into :如果当前箭头所指的代码有函数 的调用,则用Step Into 进入该函数进行单步执 行; Step Out:如当前箭头所指向的代码是在某一 函数内,用它使程序运行至函数返回处; Run to Cursor:使程序运行至光标所指的代码 处。
vc++6.0-调试详细教程(17种方法)
vc++6.0 调试详细教程Step intoStep overStep outRun to cursorWatchVariablesRegistersMemoryStop DebugCall stackDisassemblyRestart Debugger2、调试的一般过程调试,就是在程序的运行过程的某一阶段观测程序的状态。
在一般情况下程序是连续运行的,所以我们必须使程序在某一地点停下来。
我们所做的第一项工作就是设立断点;其次再运行程序;当程序在设立断点处停下来时,利用各种工具观察程序的状态。
程序在断点停下来后,有时我们需要按我们的要求控制程序的运行,以进一步观测程序的流向。
下面我们依次来介绍断点的设置,如何控制程序的运行以及各种观察工具的利用。
3、设置断点在VC中,可以设置多种类型的断点,根据断点起作用的方式把这些断点分为三类:1、与位置有关的断点;2、与逻辑条件有关的断点3、与WINDOWS消息有关的断点。
主要介绍前面两种断点。
4、设置位置断点最简单的是设置一般位置断点:¡把光标移到你要设断点的位置,当然这一行必须包含一条有效语句的;¡然后按工具条上的add/remove breakpoint 按钮或按快捷键F9。
将会在屏幕上看到在这一行的左边出现一个红色的圆点表示这里设立了一个断点5、设置位置断点-图示6、设置逻辑断点有的时候可能不需要程序每次运行到这儿都停下来,而是在满足一定条件的情况下才停下来,这时就需要设置一种与位置有关的逻辑断点。
从EDIT 菜单中选中Breakpoints命令,这时Breakpoints对话框将会出现在屏幕上。
选中Breakpoint对话框中的Location标签,使Location页面弹出。
如下页图所示。
7、8、设置逻辑断点单击上页Condition按钮,弹出Breakpoint Condition对话框,在expression_r编辑框中写出你的逻辑表达式,最后按OK返回。
VC6.0 IDE的使用和程序调试技巧
项目工作区窗口
ClassView页
FileView页 ResourceView页
FileView页
ClassView页
File->New->Proj32 Application
基于WINDOWS平台的32位开发环境开发应用程序,SDK程序。 入口函数为WinMain
文件类型 Active Server Page Bitmap File C/C++ Header File HTML Page Resource Script Resource Template
Visual C++6.0 可以创建的文件类型 说明 文件类型 网页制作 Binary File 创建位图文件 C++ Source File 创建 C/C++头文件 Cursor File 创建 HTML 文件 Icon File 创建资源脚本文件 Text File 创建资源模板文件 SQL Script File
6:使用单步执行到程序结束
设置断点以后,调试运行程序时,程序 开始执行,并且运行到断点处暂停下来, 此时我们有机会观察程序的运行情况, 并且诊断程序目前的状态是否如我们所 预期的那样。 不过我们先不着急观察程序的状态,而 是来看看如何控制程序的运行,以便在 我们需要的时候让程序暂停下来,并且 以我们需要的方式走走停停!
方法是使用单步执行手段stepover让程序向前走一步停止调试停止调试并重新启动调试单步执行当前位置对比调试运行时出现的调试菜单debug和调试工具栏根据图标查找对应项设置断点调试运行程序此时程序暂停在断点处等待选择debug菜单找到最后一项quickwatch并点击输入想要观察的变量变量名变量的值点击addwatch点击addwatch看到如下画点击单步执行按钮或者菜单程序则向前单独运行一个步骤每向前执行一步就会暂停下来这样我们就有充足的时间观察所关心的变量名称按下f5键可以让程序从当前位置向前执行直到遇见下一个断点或者程序结束下面是赠送的ppt模板不需要朋友可以下载后编辑删除
VC 6.0_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或者下图中的调试按钮,即可出现调试界面。
使用VC6.0对C语言程序进行调试的基本手段
使用VC6.0对C语言程序进行调试的基本手段(1)设置固定断点或临时断点所谓断点,是指定程序中的某一行,让程序运行至该行后暂停运行,使得程序员可以观察分析程序的运行过程中的情况。
这些情况一般包括:①在变量窗口(Varibles)中观察程序中变量的当前值。
程序员观察这些值的目的是与预期值对比,若与预期值不一致,则此断点前运行的程序肯定在某个地方有问题,以此可缩小故障范围。
例如以下程序是计算cos(x)并显示,运行时发现无论x输入为多少,结果都是0.046414。
#include <stdio.h>#include <math.h>void main(){int x;printf("Please input x:");scanf("% d", &x);printf("cos(x)=%f\n", cos(x));}在该程序中,若你没有看到问题——程序较长、较复杂时很难看出问题所在,则应该使用调试手段定位故障位置。
②在监控窗口(Watch)中观察指定变量或表达式的值。
当变量较多时,使用Varibles 窗口可能不太方便,使用Watch窗口则可以有目的、有计划地观察关键变量的变化。
③在输出窗口中观察程序当前的输出与预期是否一致。
同样地,若不一致,则此断点前运行的程序肯定在某个地方有问题。
④在内存窗口(Memory)中观察内存中数据的变化。
在该窗口中能直接查询和修改任意地址的数据。
对初学者来说,通过它能更深刻地理解各种变量、数组和结构等是如何占用内存的,以及数组越界的过程。
⑤在调用堆栈窗口(Call Stack)中观察函数调用的嵌套情况。
此窗口在函数调用关系比较复杂或递归调用的情况下,对分析故障很有帮助。
(2)单步执行程序让程序被一步一步(行)地执行,观察分析执行过程是否符合预要求。
例如,以下程序预期的功能是从键盘上读入两个数(x和y),判断x和y是否相等,相等则在屏幕上显示x=y,不相等则显示x<>y。
Visual C++ 6.0程序调试
Visual C++ 6.0程序调试在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序中的错误,系统提供了易用且有效的调试手段。
调试是一个程序员最基本的技能,不会调试的程序员就意味着即使学会了一门语言,却不能编制出任何好的软件。
1、调试程序环境介绍①进入调试程序环境选择主菜单“编译(Build)”中的“开始调试(Start Debug)”命令,选择下一级提供的调试命令,或者在菜单区空白处单击鼠标右键,在弹出的菜单中选中“调试(Debug)”项。
激活调试工具条,选择需要的调试命令,系统将会进入调试程序界面。
同时提供多种窗口监视程序运行,通过单击“调试(Debug)”工具条上的按钮,可以打开/关闭这些窗口,参考图8。
②Watch(观察)窗口单击调试(Debug)工具条上的Watch按钮,就出现一个Watch窗口,系统支持查看程序运行到当前指令语句时变量、表达式和内存的值。
所有这些观察都必须是在断点中断的情况下进行。
观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会就可以看到变量的值。
还可以采用系统提供一种被称为Watch的机制来观看变量和表达式的值。
在断点中断状态下,在变量上单击右键,选择Quick Watch,就弹出一个对话框,显示这个变量的值。
在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。
注意:这个表达式不能有副作用,例如“++”和“- -”运算符绝对禁止用于这个表达式中,因为这个运算符将修改变量的值,导致程序的逻辑被破坏。
③Variables(变量)窗口单击调试(Debug)工具条上的“Variables“按钮弹出Variables窗口,显示所有当前执行上下文中可见的变量的值。
特别是当前指令语句涉及的变量,以红色显示。
④Memory(内存)由于指针指向的数组,Watch窗口只能显示第一个元素的值。
为了显示数组的后续内容,或者要显示一片内存的内容,可以使用memory功能。
vc++6.0环境下程序调试教程
更多共享就在:/avbbtv/home,个人整理,没有版权,欢迎共享---avbbtv如何在Visual C++ 6.0 环境下进行简单的C语言程序调试桂林电子科技大学波仔*****************文章简介本文主要介绍如何在VC6.0 环境下进行简单的C 语言程序调试。
作为阅读本文的基础,读者应该熟悉如何在VC6.0 环境下建立Win32 Console Application(Win32控制台程序) 类型的工程。
请结合文章给出的案例,按照文档中的描述一步一步做。
如果只是阅读,则收效甚微。
在做完文章给出的案例后,你应该尝试着将文章中介绍的知识和技巧应用到你实际开发的程序中。
如果阅读完一遍后,对调试基本概念还是不了解,建议你再多看几遍。
在介绍如何进行C 语言程序调试( debugging)前,首先介绍程序调试的概念。
调试(debug)一词在计算机领域最早被提及,源于美国人Admiral Grace Hopper(葛丽丝·霍普、COBOL 语言发明者、电脑科学家) 。
二十世纪四十年代(1940s) Grace Hopper在哈佛大学为名为马克2 号(Mark II) 的计算机( 由IBM 公司制造) 编写程序时,有一次在排除计算机故障时,发现一只飞蛾被夹在触点原件之间,导致计算机无法运行。
于是她诙谐的把计算机故障称之为“臭虫(bug)”,把排除程序故障称之为debug 。
从此之后,在计算机领域,程序调试或查找程序故障称为debug 。
进行程序开发时,很多情况是程序通过编译、链接( 亦即不存在语法错误) ,但是在运行时往往得不到正确的结果( 需要多组输出数据进行测试)。
这时往往意味着程序存在逻辑错误( 与语法错误对应,通常是指程序所体现出的逻辑不符合开发者要求,或者是开发者本身对程序所要解决的某一问题的理解存在逻辑偏差) ,而查找逻辑错误的过程可称之为程序调试。
程序案例下面以一个程序案例为例,介绍如何在VC6.0 下进行程序调试。
VC6.0调试技巧
• ④ 运行到当前光标处 当按下CTRL+F10后。程序运行至当前光标处所在的语句。
• ① 设置断点的方法
可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后按F9快捷键或 者单击“编译”工具条上的按钮 ,断点处所在的程序行的左侧会出现一个红色圆点。
• ② 程序运行到断点 • 选择主菜单“编译(Build)”中的“开始调试(Start Debug)”命令的下一级的
“去(Go)”调试命令,或者单击“编译(Compile)”,程序执行到第一个断点处 程序将暂停执行,该断点处所在的程序行的左侧红色圆点上添加一个黄色箭头,此时, 用户可方便地进行变量观察。继续执行该命令,程序运行到下一个相邻的断点。参考 图2-9。
• ③ 取消断点 • 只需在代码处再次按F9或者单击“编译” 。也可以打开“Breakpoints”对话框后,按
照界面提示去掉断点。
• (4) 结束程序调试,返回程序编辑环境。 选择主菜单“Debug”中的“Stop Debugging”命令,或者单击“调试(Debug)” 工具条上的 按钮,或者单击Shift+F5键,可结束程序调试,返回程序编辑环境。
sual C++6.0环境后,选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace”对话框内找到并选择 要打开的工作区文件myexam1.dsw,单击“确定(OK)”按钮,打 开工作区。
• 在左侧的工作区窗口,单击下方的 “FileView” 选项卡,选择文件 视图显示,打开“Source”文件夹,再打开要编辑的C源程序进行编 辑和修改。如图所示。
Visual C++ 6.0编写、调试和运行C程序标准流程
环节01:打开Visual C++ 6.0界面(如下图)如果是已经打开旳界面,想重新开始一种新旳工程,则可按下述方式进行:1)单击关闭工作空间菜单项(如下图)File->Close Workspace(或“文献”->“关闭工作空间”)2)在弹出旳“确认”窗口中单击“Yes”(或“是”)。
表白要关闭工作空间时也同明关闭所有已打开旳文献。
(如下图)环节02:新建一种工程1) File->New(或“文献”->“新建”)2)切换到Projects页面。
工程(或项目)类型选择:Win32 Console Application;工程(或项目)名称:自已任意拟定,但一定要有(例:TestProject);工程(或项目)在硬盘上旳存储位置:如图例D盘根目录下面旳TestProject目录(此目录旳名称可不用手工设定,VC6会根据工程名称来自动设定)。
最后单击OK项目名称项目在硬盘上旳存储位项目类型3)选择“一种空工程”(如是英文则:an empty project)。
单击Finish,完毕工程旳建立4)工程建立完毕后,会出来一种工程旳建立报告,单击OK5)浮现如下窗口界面注意:“Source Files ”“Header Files ”“Resource Files ”三个目录只是逻辑上旳存在,在硬盘上并没有这三个目录。
同样旳,这个“工作空间->工程->文献”旳三级树型构造也只是为了管理整个C 程序编写、调试和运营旳过程而存在旳逻辑构造,硬盘上也没有。
最顶层是“工作空间”节点。
一种工作空间下“工程”节点,下面有“源文献”、“头文献”、“资源文献”三个目录,环节03:往工程里添加后缀名为“.c”旳文献,并往文献里写入C程序1)File->New(也也许是中文旳菜单项名)2)在弹出旳对话框中选择Files页面。
在文献类型列表中,①鼠标左键单击选中“C++ Source File”类型旳文献;②勾上“Add to project”并选择刚刚建好旳那个工程旳名称(此例为TestProject工程);③File下面旳文本框中,键入文献旳名称,可以任意命名,但后缀名必须是“.c”,别忘掉了!!!!!!!④Location下面是选择将新建旳文献放到哪个目录下面,可以让VC6.0自动设定,不必操劳。
【Visual C++】Visual_C++6.0调试功能图解教程
Visual C++ 6.0调试功能这是我自己在学习时整理的,希望对大家有用.其中有几个部分的内容,如下:※My Note全部由我截图并参考资料进行说明,这其中有大量的内容是调试过程中体会总结才写的.有不当之处请大家更正.※From 《Visual C++ Debugger》这本书写得非常的不错,从里面截了一些有用的图,主要是强烈推荐大家阅读这本书.※Debug Menu From MSDN这是我从Visual C++ 6.0 MSDN Library October 2001中查来的,在My Note中有很多是从那里参考的.强烈推荐大家看这份英文说明.※From 《visual C++ 6.0开发工具与调试》这是我从网络上搜索到的,问题很经典,强烈推荐大家参看学习,避免不必要的错误.My Note○常用功能:1.Restart(Ctrl+shift+F5):此debugger功能将从程序的开始(第一有效行)处全速执行,而不是从当前所跟踪的位置开始调试,这时所有变量的当前值都将被丢弃,debugger会自动停在程序的main()开始处.这时如果选择Step Over(F10)就可以逐步执行main()函数了.2. Stop Debugging(Shift+F5):此debugger功能将终止(所有)调试,并返回到常规编辑状态.3. Break(此功能常常在遇到调用函数的语句时可见.):此功能将在调试过程中的debugger当前位置挂起程序的执行,然后就可以在调试状态一修改程序的代码,接着可以用Apply Code Changes(Alt+F10)来应用修改的代码到正在调试的程序当中.如果,当前(需要,待)可以(从DOS等窗口)输入值,挂起后将不能再输入.4.Apply Code Changes(Alt+F10):此功能可以在程序正在调试程序过程中应用(挂起)修改后的源代码.如,选择Break功能并修改代码后,只要选择Apply CodeChanges(Alt+F10)就能将修改后的代码应用到正在调试的程序当中.5. Show Next Statement(Alt+Num*):此功能将显示程序代码的下一条语句,如果源代码中找不到,则在Disassembly窗口中显示语句.当在Disassembly窗口中显示时,可以单击Disassembly 返回到源代码窗口.6.Step Into(F11):此功能可以单步进入到在调试过程中所跟踪的调用函数的语句的函数内部.如,当前语句是”d.Display()”,选择Step Into(F11)后,Debugger将进入Display()函数内部并停在Display()函数内部的第一条语句上.(此时,就可以Step Over(F10)对Display()函数进行单步调试了.)7. Step Over(F10):此功能可以单步对所在函数单步调试,如果调试的语句是一个调用函数的语句时,Debugger将全速执行所调用的函数,单步(一步)通过所调用的函数,Debugger停该调用语句的下一条语句上.8.Step Out(Shift+F11):此功能将使Debugger切换回全速执行到被调用函数结束,并停在该函数调用语句的下一条语句上.当确定所调用的函数没有问题时可以用这个功能全速执行被调用函数.9. Run to Cursor(Ctrl+F10):此功能将全速执行到包含插入点光标所在的行,可以作为在插入点光标处设置常规断点的一种选择.注意,当光标处不是一个有效的执行语句时此功能将不起作用.10.Go(F5):此功能将全速执行程序直到遇到一个断点或程序结束,或直到程序暂停等待用户输入.注意,此功能最能有效的调试循环,常将断点设置在循环体内,重复的按F5全速执行循环体可以测试循环过程中的产生的变化.11.Step Into Specific Function:此功能可以可以单步通过程序中的指令,并进入指定的函数调用,此功能对于函数的嵌套层不限.From 《Visual C++ Debugger》Debug Menu From MSDNStart Debug Commands (Build menu)When you begin debugging, the Debug menu appears, replacing the Build menu on the menu bar. You can then control program execution using the commands listed in the following table.Debug Menu Commands that Control Program ExecutionThe following additional commands appear on the Debug menu:From 《visual C++ 6.0开发工具与调试》1、如何快速地规范代码缩进格式选中所需要规范的代码,按shift+F82、如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用VC6.0编写和调试源程序
一、编写和执行程序
1)新建一个工作空间。
2)新建一个工程, win32控制台程序
3)新建一个C++源文件
4)写入源程序。
5)编译,生成可执行程序
6)观察下方提示,找出错误所在行,检查程序。
7)修改程序直到编译通过。
8)执行程序, 观察执行结果,如果错误,需要对程序进行调试。
1)显示调试工具栏
2) 设置断点(断点:调试时,程序执行至此处暂停。
)
在源程序中选择要增加断点的行,按F9或工具栏的手型符号添加断
点。
3)按工具栏上的调试按钮或快捷键F5,开始调试程序
输入数据后,程序在断点上暂停。
可以点击调试工具栏的“WA TCH”显示自动变量追踪窗口
从左下方的窗口观察自动变量的值。
可以点击调试工具栏的“variables”显示自定义变量追踪窗口
在右下方窗口增加需要追踪的变量(直接输入变量名称)
可以点击调试工具栏的“WA TCH”显示自动变量追踪窗口
点调试工具栏上的单步调试键或快捷键F11,进行单步调试。
VC6.0Debug调试总结
1. 如何显示Debug工具栏窗口?
①:在任意工具栏的位置,单击鼠标右键,勾选Debug项
②:Tools---->Customize--→Toolbars--→Debug--→close
引申:工具栏和工具条的区别?
一个工具栏可以放置多个工具条。
2.关于断点调试
F9:设置或去除断点。
如果当前行未设置断点,按F9可在当前行设置断点,如果当前行已设置断点,按F9则为去除断点设置。
Alt+F9:调出断点设置窗口
在这个窗口里可以设置断点,去除所有已经设置的断点或者
单个断点,也可以转到已设置的断点处,通过按钮Edit Code,
可以设置需要被计算的表达式,可以设置,监视(Watch)数组
或结构体元素的个数,可以在窗口过程函数中设置断点,可
以为任何一个想要监视(Watch)的消息(Message)设置一个断
点。
3.关于开始调试
①:Build--→Start Debug--→Go
②:F5
注:F5有两层含义。
对于非调试阶段,按F5用于开始调试。
对于调试阶段(已经进入调试阶段),按F5用于运行程序到下一个断点处
4. 关于停止调试
一旦按F5之后进入调试阶段,IDE编辑器上就会增加一个Debug
菜单选项(里面包含一些常用调试手段)
①:Debug--→Stop Debugging
②:Shift+F5
5.关于重新开始调试(或者说重头开始调试)
这个功能既可以在调试阶段使用,也可以在非调试阶段使用,用于进入调试阶段。
在调试阶段,它的功能如下:(即不停止调试的情况下)
如果在一个程序里有多个断点,比如断点1、断点2、。
断点5.首先,按F5调试,进入调试阶段,程序首先执行到断点1处,如果再按F5就会执行到断点2处,依次类推,直到断点5处,如果当程序执行到断点5处,再按F5,则程序不会再中断,程序完全运行起来。
可是,在调试阶段,如何从断点2~断点5处之间的任意一个断点跳到断点1处去重新执行呢?
在这种情况下,就可以用重新开始调试(注意,这个重新开始调试是指再不停止调试的情况下,重新开始调试),比如,现在在断点4处,想回到断点1处,就可以按Ctrl+Shift+F5(重新开始调试的快捷键)
①:Debug--→Restart
②: Ctrl+Shift+F5
6.关于单步调试
前提条件---→调试阶段
①:Debug--→Step Into (F11)
逐语句。
(例如,遇到函数调用时会进入被调函数)
②:Debug--→Step Over (F10)
逐过程(例如,遇到函数调用语句时,不会进入被调函数)
③:Debug--→Step Out (Shift+F11)
跳出过程调用(例如,当F11逐语句进入被调函数后,按
Shift+F11会跳出被调函数)
④:Debug--→Run to Cursor (Ctrl+F10)
运行到光标所在位置。
7.关于变量监视
①:Debug--→QuickWatch (Shift+F9)
调出QuickWatch对话框,添加要监视查看(watch)的表达式(expression),然后
Add Watch,程序之后就会监视该表达式
②:View--→Debug Windows---→Watch (Alt+3)
监视你设置的需要被监视的变量。
③:View--→Debug Windows---→Variables (Alt+4)
监视所有变量。
注:View下的Debug Windows下的所有项均在Debug工具条中有。