VC++程序调试演示 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
An Overview of ICU 程序调试概述 概述 检测和纠正错误是软件开发的重要组成部分,称这为确认与验正。确认指的是检查算法和程序是否达到了问题的技术要求,验证是指检查算法和程序是否正确和完整。 好的调试策略 定位错误的一种好的方法是使程序打印引导性结果,以及指出什么时候该程序的某一部分开始执行和结束执行的消息。 19th International Unicode Conference San Jose, CA, September 2001
程序调试概述 四种程序错误类型 查看错误消息 语法或编译时错误 连接错误 运行错误 逻辑或意图错误 An Overview of ICU 程序调试概述 四种程序错误类型 语法或编译时错误 连接错误 运行错误 逻辑或意图错误 查看错误消息 为查看产生特定诊断消息的代码语句,只要双击Output窗口中相关的诊断消息即可; 为获得一条错误消息的帮助,首先在Output窗口中使用鼠标指针单击错误消息码,然后按F1键,相应帮助文件打开。 19th International Unicode Conference San Jose, CA, September 2001
An Overview of ICU 程序调试概述 预防性维护 一条有经验的方法是桌面检查法。桌面检查一个程序类似于核对一封信或手稿,其思想是在内心对程序进行跟踪,确保程序逻辑正确。程序员必须考虑各种可能的输入,并记录程序执行期间所产生的所有结果。 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 Restart:(CTRL+SHIFT+F5)指示VC++,用户要从 An Overview of ICU Debugger工具栏简介 Restart:(CTRL+SHIFT+F5)指示VC++,用户要从 开始处调试程序,而不是从当前所跟踪的位置开始调试 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 停止程序调试,返回到Build菜单选项 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 在当前点上挂起程序的执行 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (ALT+F10)可以在程序正在调试时修改源代码 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (ALT+NUM)显示程序代码中的下一条语句 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (F11)正在跟踪的语句是一个子程序调用(函数或方法)时,该选项单步进入所调用的子程序 An Overview of ICU Debugger工具栏简介 (F11)正在跟踪的语句是一个子程序调用(函数或方法)时,该选项单步进入所调用的子程序 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (F10)正在跟踪的语句是一个子程序调用(函数或方法)时,该选项跳过所调用的子程序,停留在子程序调用下面的语句 An Overview of ICU Debugger工具栏简介 (F10)正在跟踪的语句是一个子程序调用(函数或方法)时,该选项跳过所调用的子程序,停留在子程序调用下面的语句 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (SHIFT+F11)确认当前子程序中没有程序错误时,该选项可以快速执行该子程序,并停留在子程序后面的语句 An Overview of ICU Debugger工具栏简介 (SHIFT+F11)确认当前子程序中没有程序错误时,该选项可以快速执行该子程序,并停留在子程序后面的语句 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (CTRL+F10)快速执行到光标所在的代码处 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 (SHIFT+F9)显示QuickWatch窗口,在该窗口可以计算表达式的值 An Overview of ICU Debugger工具栏简介 (SHIFT+F9)显示QuickWatch窗口,在该窗口可以计算表达式的值 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 打开Watch窗口,该窗口包含该应用程序的变量名及其当前值,以及所有选择表达式 An Overview of ICU Debugger工具栏简介 打开Watch窗口,该窗口包含该应用程序的变量名及其当前值,以及所有选择表达式 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 打开Variables窗口,该窗口包含关于当前和前面的语句中所使用的变量和返回值 An Overview of ICU Debugger工具栏简介 打开Variables窗口,该窗口包含关于当前和前面的语句中所使用的变量和返回值 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 显示Regisers窗口,显示微处理器的一般用途寄存器和CPU状态寄存器 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 打开Memory窗口,显示该应用程序的当前内存内容 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 显示所有未返回的被调用的子程序名 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
Debugger工具栏简介 打开一个包含汇编语言代码的窗口,其中的汇编语言代码来自编译后程序的反汇编 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
启动Debugger 在VC++中打开源程序 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
启动Debugger 进入调试模式 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
按F10,Auto窗口出现a,b,c三个变量,注意这三个变量还没有被赋值 An Overview of ICU 变量跟踪 按F10,Auto窗口出现a,b,c三个变量,注意这三个变量还没有被赋值 19th International Unicode Conference San Jose, CA, September 2001
按F10, a,b,c三个变量被赋值,s和area变量还没有被赋值 An Overview of ICU 变量跟踪 按F10, a,b,c三个变量被赋值,s和area变量还没有被赋值 19th International Unicode Conference San Jose, CA, September 2001
按F10, s变量被赋值,area变量还没有被赋值 An Overview of ICU 变量跟踪 按F10, s变量被赋值,area变量还没有被赋值 19th International Unicode Conference San Jose, CA, September 2001
变量跟踪 按F10, area变量被赋值 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
变量跟踪 按F10, 输出a,b,c,s的值 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
变量跟踪 按F10, 输出area的值 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
设置断点 将光标放到需要设置断点的行 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
设置断点 点击按钮 断点设置好 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
快速执行到一个断点 点击按钮 快速执行到断点设置行 An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
3如何设置断点
在VC中,可以设置多种类型的断点,根据断点起作用的方式把这些断点分为三类: ** 与位置有关的断点; ** 与逻辑条件有关的断点 ** 与WINDOWS消息有关的断点。
与位置有关的断点; 1、最简单的是设置一般位置断点,把光标移到你要设断点的位置;然后按工具条上的add/remove breakpoint 按钮或按快捷键F9;在这一行的左边出现一个红色的圆点表示设了一个断点。
2 、当在满足一定条件的情况下才停下来,设置一种与位置有关的逻辑断点。 从EDIT 菜单中选中breakpoint命令。选中Breakpoint对话框中的LOCATION标签,使LOCATION 页面弹出。
单击condition按钮,弹出Breakpoint对话框,在Expression编辑框中写出逻辑表达式,如X>=3或a+b>25,最后按OK返回。 这种断点主要是由其位置发生作用的,但也结合了逻辑条件。
3、当需要更深入地调试程序,需要进入程序的汇编代码,在汇编代码上设立断点:从View菜单中选Debug window命令 ,再选Disassembly子命令,这时汇编窗口将会出现在屏幕上。
汇编窗口是对应于源程序的汇编代码,源程序用黑体字显示,下面是对应的汇编代码。设立断点,将光标移到想设断点处然后点击工具条上的Insert/Remove Breakpoints 按钮,将会看到一个红圆点出现在该汇编代码的右边。
与逻辑条件有关的断点 1、逻辑条件触发断点的设置: *从EDIT 菜单中选中breakpoint命令,屏幕上出现Breakpoint对话框。
* 选中Breakpoint对话框中的DATA标签,对应的页面将会弹出
* DATA页面中的Expression编辑框中写出逻辑表达式,如(X==3);
2、监视表达式发生变化断点: * 从EDIT 菜单中选中breakpoint命令,屏幕上将会出现Breakpoint对话框。 * 选中Breakpoint对话框中的DATA标签,对应的页面将会弹出。 * 在Expression编辑框中写出需要监视的表达式。 * 最后按OK键返回。
3、监视数组发生变化的断点: * 从EDIT 菜单中选中breakpoint命令,屏幕上将会出现Breakpoint对话框。 * 选中Breakpoint对话框中的DATA标签,对应的页面将会弹出。 * 在Expression编辑框中写出需要监视的数组名;在Number of Elements 编辑框输入需要监视数组元素的个数; * 按OK键返回。
4、监视由指针指向的数组发生变化的断点: * 从EDIT 菜单中选中breakpoint命令,在屏幕上将会出现Breakpoint对话框。 * 选中Breakpoint对话框中的DATA标签; * 在Expression编辑框中输入形如*pointname,其中*pointname为指针变量名;在Number of Elements编辑框输入需要监视数组元素的个数; * 最后按OK键返回。
5、监视外部变量发生变化的断点: * 从EDIT 菜单中选中breakpoint命令,屏幕上将会出现Breakpoint对话框; * 选中Breakpoint对话框中的DATA标签; * 在Expression编辑框中输入变量名; * 点击在Expression编辑框的右边的下拉键头; * 选取Advanced选项,Advanced Breakpoint 对话框出现; * 在context框中输入对应的函数名和文件名; * 按OK键关闭Advanced Breakpoint 对话框。 * 按OK键关闭Breakpoints 对话框。
4 控制程序的运行
从菜单Build到子菜单Start Debuging 选择Go程序开始运行在Debug状态下,程序会由于断点而停顿下来后,可以看到有一个小箭头,它指向即将执行的代码。按要求来控制程序的运行,其中有四条命令:Step over, step Into , Step Out ,Run to Cursor。 ◇ Step over 的功能是运行当前箭头指向的代码(只运行一条代码)。 ◇ Step Into的功能是如果当前箭头所指的代码是一个函数的调用,则用Step Into 进入该函数进行单步执行。 ◇ Step Out的功能是如当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处。 ◇ Run to Cursor的功能是使程序运行至光标所指的代码处。
5 查看工具的使用
1、弹出式调试信息泡泡(Data Tips Pop_up Information)。 调试过程中最重要的是要观察程序在运行过程中的状态,才能找出程序的错误之处。 1、弹出式调试信息泡泡(Data Tips Pop_up Information)。 要看一个变量的值或表达式的值,只需在源程序窗口中,将鼠标放到该变量上,将会看到一个信息泡泡弹出,其中显示出该变量的值。
2、变量窗口(VARIABLE WINDOW)。 在VIEW 菜单,Debug window选 Variables window; 变量窗口将出现在屏幕上。其中显示着变量名及其对应的值。将会看到在变量观察窗口的下部有三个标签:AUTO ,LOCAL,THIS 选中不同的标签,不同类型的变量将会显示在该窗口中。
3、观察窗口(WATCH WINDOW)。 在VIEW 菜单,选择Debug window,Watch window 子命令。变量窗口将出现在屏幕上。
观察窗口中双击Name栏的某一空行,输入要查看的变量名或表达式。回车后将会看到对应的值。观察窗口可有多页,分别对应于标签Watch1,Watch2,Watch3等等。
4、快速查看变量对话框(quick watch)。(查看变量或表达式的值) (1)在Debug 菜单,选择Quick Watch,出现Quick Watch 对话框; (2)在Expression 编辑框中输入变量名,按回车; (3)在Current Value 格子中将出现变量名及其当前对应的值; (4)如要改变该变量的值双击该变量对应的Name 栏,输入要改变的值; (5)如要把该变量加入到观察窗口中,点击Add watch 按钮; (6)点击Close 按钮返回。
VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序调试概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
结束Debugger 点击按钮,结束Debugger An Overview of ICU 19th International Unicode Conference San Jose, CA, September 2001
VC++程序调试演示 程序高度概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 An Overview of ICU VC++程序调试演示 程序高度概述 Debugger工具栏简介 启动Debugger 变量跟踪 设置断点 快速执行到一个断点 结束Debugger 快速查看变量类型 19th International Unicode Conference San Jose, CA, September 2001
快速查看变量类型 将光标停留在变量上,可以查看变量类型