[C++]Visual C++程序调试方法入门
概述
调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门
语言,却不能编制出任何好的软件。
这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。
本文约定,在选择菜单时,通过/表示分级菜单,例如 File/Open 表示顶级菜单 File 的子菜单 Open。
设置
为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从 AppWizard 创建的工程中包含的
Debug Conguration 自动包含调试信息,但是是不是 Debug 版本并不是程序包含调试信息的决定因素,程序
设计者可以在任意的 Conguration 中增加调试信息,包括 Release 版本。
为了增加调试信息,可以按照下述步骤进行:
打开 Project settings 对话框(可以通过快捷键 ALT+F7 打开,也可以通过 IDE 菜单 Project/Settings 打
开)
选择 C/C++页,Category 中选择 general ,则出现一个 Debug Info 下拉列表框,可供选择的调试信息
方式包括:
命令行
Project settings
说明
无
None
没有调试信息
/Zd Line Numbers Only
目标文件或者可执行文件中只包含全局
和导出符号以及代码行信息,不包含符
号调试信息
/Z7 C 7.0- Compatible
目标文件或者可执行文件中包含行号和
所有符号调试信息,包括变量名及类
型,函数及原型等
/Zi Program Database
创建一个程序库(PDB),包括类型信息
和符号调试信息。
/ZI
Program Database
for Edit and Continue
除了前面/Zi 的功能外,这个选项允许对
代码进行调试过程中的修改和继续执
行。这个选项同时使#pragma 设置的
优化功能无效
选择 Link 页,选中复选框"Generate Debug Info",这个选项将使连接器把调试信息写进可执行文件和
DLL
如果 C/C++页中设置了 Program Database 以上的选项,则 Link incrementally 可以选择。选中这个选
项,将使程序可以在上一次编译的基础上被编译(即增量编译),而不必每次都从头开始编译。
断点
断点是调试器设置的一个代码位置。当程序运行到断点时,程序中断执行,回到调试器。断点是 最常用的技
巧。调试时,只有设置了断点并使程序回到调试器,才能对程序进行在线调试。
设置断点:可以通过下述方法设置一个断点。首先把光标移动到需要设置断点的代码行上,然后
按 F9 快捷键
弹出 Breakpoints 对话框,方法是按快捷键 CTRL+B 或 ALT+F9,或者通过菜单 Edit/Breakpoints 打开。
打开后点击 Break at 编辑框的右侧的箭头,选择 合适的位置信息。一般情况下,直接选择 line xxx 就足够
了,如果想设置不是当前位置的断点,可以选择 Advanced,然后填写函数、行号和可执行文件信息。
去掉断点:把光标移动到给定断点所在的行,再次按 F9 就可以取消断点。同前面所述,打开 Breakpoints 对
话框后,也可以按照界面提示去掉断点。
评论3