第5章V调试器_第1页
第5章V调试器_第2页
第5章V调试器_第3页
第5章V调试器_第4页
第5章V调试器_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第5章章 vc+调试器调试器 第第5章章 vc+调试器调试器 5.1 概述概述5.2 vc+调试器界面调试器界面 5.3 vc+调试器的应用调试器的应用5.4 高级调试技巧高级调试技巧习题习题 第第5章章 vc+调试器调试器 5.1 概述概述5.1.1 调试版本与发行版本调试版本与发行版本vc+中的应用程序能产生两种类型的执行代码:调试版本与发行版本。调试版本是软件开发和检测修改程序的部分,发行版本是最终的结果,将发行给用户。调试版本较发行版本要大,运行起来要慢一些。编译器在目标文件中填满了符号信息,这些符号信息记录了编译器知道的函数名、程序中的变量名和标识的内存地址。 第第5章章 vc+调

2、试器调试器 5.1.2 调试功能调试功能vc+调试功能包括如下几个方面:(1) 设置断点。 (2) 逐步调试代码。 (3) 监视变量、注册表和内存。 (4) 查看代码和调用堆栈。 (5) 修改代码和变量的值。第第5章章 vc+调试器调试器 5.2 vc+调试器界面调试器界面 5.2.1 build菜单菜单build莱单包含的内容如图5-1所示。第第5章章 vc+调试器调试器 图5-1 build莱单 第第5章章 vc+调试器调试器 下面我们介绍图5-1所示的build菜单中的各项命令。l compile:用来编译当前的源代码文件,在图5-1中,compile example.cpp表示编译ex

3、ample.cpp文件; l build:查看当前项目中的所有文件,并对最近修改过的文件进行编译和链接,生成可执行文件。在图5-1中,build example.exe表示对当前的文件进行编译和链接,生成可执行文件example.exe文件;l rebuild all:忽略以前的编译和链接工作,重新编译和链接整个项目文件;第第5章章 vc+调试器调试器 l batch build:成批编译和链接,即一次编译和链接多个项目文件;l clean:清除当前项目的中间文件和输出文件;l start debug:启动程序调试器,用于跟踪程序的调试和执行;l debuger remote connecti

4、on:对远程调试链接设置进行编辑;l execute:运行程序;l set active configuration:选择当前项目的配置,例如win32 release和win32 debug;第第5章章 vc+调试器调试器 l configuration:编辑项目配置;l profile:启动剖析器,用于检查程序的运行行为。1build命令命令build命令用于编译当前项目中所有的c、c+源代码文件或资源文件。2start debug命令命令start debug命令的下级子菜单如图5-2所示。第第5章章 vc+调试器调试器 图5-2 start debug命令的下级子菜单第第5章章 vc+

5、调试器调试器 在start debug命令的下级子菜单中,包含了启动调试器运行的各项子命令,子命令及其功能如下:l go:从程序中的当前语句开始执行,直到遇到断点或遇到程序结束。l step into:控制程序单步执行,并在遇到函数调用时进入函数内部。l run to cursor:在调试运行程序时,使程序运行到当前光标所在位置时停止,相当于设置了一个临时断点。l attach to process:在调试过程中直接进入到正在运行的进程中。第第5章章 vc+调试器调试器 5.2.2 debug菜单菜单启动调试器后,主菜单栏中的“build”将被“debug”所代替,如图5-3所示。 第第5章章

6、 vc+调试器调试器 图5-3 debug菜单第第5章章 vc+调试器调试器 debug菜单在适当的时候才会出现。比如,打开一个项目文件后,选择build菜单的 start debug项中的go命令,链接成功后,debug菜单出现,同时出现debug工具栏,如图5-4所示。第第5章章 vc+调试器调试器 图5-4 debug工具栏 第第5章章 vc+调试器调试器 使用debug工具栏按钮可以控制程序的执行。此外,调试器启动后,edit和view菜单中与调试有关的命令将被激活。通常情况下,debug工具栏中各个按钮分别对应debug菜单中相应的菜单项。因此,这里只介绍debug菜单中的各项命令。

7、debug菜单各项命令的含义如下:l go:和build菜单的start debug子菜单中的go命令作用相同,用于执行程序代码到程序中的断点处;l restart:重新对程序进行调试,对应的快捷键为ctrl+shift+f5;第第5章章 vc+调试器调试器 l stop debugging:终止调试过程,返回到编辑状态;l break:中断正在进行的调试操作;l apply code change:应用对代码的更改;l step into:逐步调试程序,遇到调用函数时,进入函数内部逐步执行;l step over:也是逐步调试程序,遇到调用函数时,并不进入函数内容执行;l step out:

8、调试程序时,从正在执行的某个嵌套结构的内部跳到该结构的外部,常用于知道调用函数中不存在错误的情况;第第5章章 vc+调试器调试器 l run to cursor:调试程序时,直接运行到插入点处;l step into specific function:也是逐步进行程序代码的调试,并且根据指定的信息进入函数的内部;l exceptions:设置异常处理的一些参数;l module:显示模块列表;l show next statement:显示程序代码中当前位置的下一条语句;l quick watch:快速查看表达式等的值。第第5章章 vc+调试器调试器 5.3 vc+调试器的应用调试器的应用

9、5.3.1 建立应用程序的调试版本建立应用程序的调试版本为了创建一个程序的调试执行版本,首先应该保证配置是win32 debug。默认情况下,当用户创建一个新项目时,vc+即设置配置为win32 debug,如图5-5所示,在build工具栏中显示当前的配置。第第5章章 vc+调试器调试器 图5-5 build工具栏显示当前配置 第第5章章 vc+调试器调试器 也可以在build菜单中选择set active configuration命令,以查看当前的配置,看是否有必要将它更改为调试版本。win32 debug配置自动改变为程序设置,并在project settings对话框中显示出来。通过

10、单击project菜单中的settings命令,打开project settings(项目设置)对话框,并选择c/c+和link选项卡,对话框中的设置分别如图5-6和图5-7所示。 第第5章章 vc+调试器调试器 图5-6 c/c+选项中的设置 第第5章章 vc+调试器调试器 图5-7 link选项中的设置 第第5章章 vc+调试器调试器 其中:(1) 在c/c+选项上的optimizations下拉列表框中显示disable(debug)选项。(2) 在link选项中,选中generate debug info复选框。有了这些设置,就可以顺利地建立项目了,其结果是一个针对调试器含有符号信息的

11、程序调试版本。第第5章章 vc+调试器调试器 5.3.2 设置断点设置断点1通过鼠标和键盘设置断点如果想使用鼠标而不是键盘,可以在此行单击鼠标右键,即可出现一个快捷菜单,如图5-8所示。第第5章章 vc+调试器调试器 图5-8 设置或清除断点的快捷菜单 第第5章章 vc+调试器调试器 2通过通过breakpoints对话框设置断点对话框设置断点虽然比较麻烦,但也可以通过breakpoints对话框来设置断点。按下ctrl+b键或在edit菜单中选择breakpoints命令,屏幕上将出现如图5-9所示的breakpoints对话框,该对话框中有三个选项,分别用于设置位置断点、数据断点、条件断点

12、和消息断点,现在我们分别介绍这四种断点类型。第第5章章 vc+调试器调试器 图5-9 breakpoints对话框第第5章章 vc+调试器调试器 1) 位置断点2) 数据断点在如图5-10所示的breakpoints对话框中,选择data选项卡,键入用户想利用调试器进行监视的变量或表达式,例如i3。 4) 消息断点第第5章章 vc+调试器调试器 图5-11 breakpoint condition对话框 第第5章章 vc+调试器调试器 5.3.3 运行调试器运行调试器从build菜单中选择start debug命令,将出现一个级联菜单,其下有四个子菜单项,分别为:go、step into、ru

13、n to cursor和attach to process,如图5-12所示。各子菜单项的功能前面已介绍过,这里就不再赘述。第第5章章 vc+调试器调试器 图5-12 从build菜单中启动调试器 第第5章章 vc+调试器调试器 5.3.4 调试器窗口调试器窗口调试的程序在某一断点处停止时,调试器更新带有目前程序运行状态消息的窗口。也许调试器窗口中最重要的是源程序窗口,如图5-13所示。第第5章章 vc+调试器调试器 图5-13 从build菜单中启动调试器第第5章章 vc+调试器调试器 当调试器重新获取控件时,debug工具栏出现在屏幕上。debug工具栏中有debugger windows

14、的六个按钮以充当触发器,如图5-14所示,显示或隐藏含有目前程序状态消息的窗口。 quick watchwatchregisterscall stackmemorydisassemblyvariables图5-14 debug工具栏中的触发调试器窗口按钮 第第5章章 vc+调试器调试器 下面是显示在每个窗口中的消息类型:l watch:通过调试器跟踪的目前变量和表达式的值。在watch窗口中指定当程序被挂起时,要了解哪些变量的当前值。l variables:在访问或靠近中断位置处的当前变量值,variables窗口具有以下三个选项: auto:显示变量和函数的返回值; locals:显示当前函

15、数的局部变量;this:在一个c+程序中,标识指针目前所指向的目标。第第5章章 vc+调试器调试器 l registers:cpu寄存器的当前内容。l memory:特定地址的内存转储。l call stack:没有返回的被调用函数的列表,call stack显示通过嵌套函数调用断点位置的执行路径。l disassembly:在屏幕上,为了补充源程序窗口,其中显示编译代码的汇编语言转换,disassembly意味着将程序中的机器码转换为相应的汇编指令。第第5章章 vc+调试器调试器 5.3.5 使用调试器使用调试器1单步调试程序单步调试程序如图5-15所示,debug工具栏拥有一个四个按钮的调

16、试组,可以通过箭头粗略地了解step工具。按钮上的图像按次序分别激活step into、step over、step out和run to cursor命令。在这之前,我们已经讨论了run to cursor命令,其他的三条命令则需要更多的解释。第第5章章 vc+调试器调试器 step intostep outrun to cursorstep over图5-15 debug工具栏中的调试按钮第第5章章 vc+调试器调试器 2终止和重新启动调试器终止和重新启动调试器如图5-16所示,restart按钮可以取消执行命令,并从头开始重新运行程序,废弃诸如系统资源或内存之类的分配。 3随机校正随机校

17、正4断点编程断点编程第第5章章 vc+调试器调试器 show next statementstop debuggingapply code changesrestartbreak execution图5-16 debug工具栏中的终止和重新启动按钮 第第5章章 vc+调试器调试器 5.4 高级调试技巧高级调试技巧 5.4.1 调试过程中的异常处理调试过程中的异常处理 几乎所有的程序,包括win32和mfc,都有可能失效,对于多任务环境来说,应用程序共享有限的系统资源更为常见。所谓异常就是指非正常的、意想不到的事情,这些事情可能会改变程序的正常进程,往往需要操作系统进行特殊的处理。第第5章章 v

18、c+调试器调试器 vc+调试器能快速完成截取异常情况,用多线程处理应用程序,调试activex用户和服务器应用程序等工作。当被调试的程序在一台计算机上运行时,调试器还能在另一台计算机上运行。 利用c+异常处理机制,当意想不到的错误发生时,程序可以保留控制权。当函数检测到一个错误时,它通过调用throw关键字来通知异常处理程序,该程序利用catch关键字来获得通知。 第第5章章 vc+调试器调试器 5.4.2 调试线程调试线程在一个运行的应用程序中,一个线程就是一条运行路径。每个应用程序至少运行一个线程,即主线程或根线程,它也可能生成其他线程。当调试具有多个线程的程序时,用户可以选择要调试哪个线程,并按照其执行流进行调试。只有在调试器开始执行后,才可以选择一个要调试的线程。 第第5章章 vc+调试器调试器 5.4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论