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