文章目录
- 1、界面组成
- 2、调试配置界面
- 3、调试相关快捷键使用
- 4、调试过程设置以及窗口
1、界面组成
1)新建文件 筛选器 目录
2)大纲显示
3)IntelliSense智能提醒
IntelliSense 智能提醒IntelliSense 是一组功能,可用于在编辑器中直接显示代码的信息,并且可在某些情况下编写小段代码。如同在编辑器中拥有了基本文档内联,从而无需在其他位置查看类型信息
2、调试配置界面
某些项目设置也对调试产生影响。这些设置确定诸如调试器查看的目录、用于启动程序的命令和命令参数以及为程序创建的调试信息的类型等内容。可以在“属性页”对话框中更改Visual C++调试配置的项目设置。每当你保存解决方案时,每个调试户型设置均自动写入并保存到解决方案的“用户”文件(.vcxproj.user)中
1)符号文件pdb
PDB又称为程序数据库,数据存储在与可执行文件不同的文件中,以帮助限制可执行文件的大小,从而节省磁盘存储空间并减少加载数据所花的时间
包括:
- publics和exports
- 全局符号
- 本地符号
- type data
- 原文件名字和行数
2)C/C++常规设置
|项|说明 |值参考|
|–|–|–|
|附加包含目录|指定的include目录|可为相对路径、全路径|
|调试信息格式 | 指定要为项目创建的调试信息类型 |/Z7:C7兼容 /ZI:用于“编辑并继续”的程序数据库 、/Zi:程序数据库|
3)C/C++ 优化
项 | 说明 | 值 |
---|---|---|
优化 | /Od:已禁用 /O1:最大优化(优化大小) /O2:最大优化(优化速度) /Ox:优化(优化速度) 自定义 | |
在Debug模式下,是默认开启禁止优化的 | ||
在Release模式优化模式的区别: |
- O1:这个模式下,文件大小最小,速度比O2慢
- O2:这个模式下,速度最快,文件大小比O1大
- Ox:这个模式下,兼顾文件大小与速度,可能牺牲兼容性
4)C/C++代码生成
项 | 说明 | 值参考 |
---|---|---|
运行库 | /MT:多线程 /MTd:多线程调试 /MD:多线程DLL /MDd:多线程调试DLL |
MT、MTd、MD、MDd 的区别:
MT:mutithread,多线程库,编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码,即连接LIBCMT.lib库
MTd:mutithread+debug,多线程调试版,连接LIBMITD.lib库
MD:MT+DLL,多线程动态库,连接MSVCRT.lib库,这是个导入库,对应动态库为MSVCRT.dll
MDd:MT+DLL+debug,多线程动态调试库,连接MSVCRTD.lib库,对应动态库为MSVCRTD.dllC/C++ 常规设置
5)连接器调试
项 | 说明 | 只参考 |
---|---|---|
生成调试信息 | 通知链接器包含调试信息,这些信息具有/Z7、/Zd、/Zi或/ZI指定的格式 | /DEBUG:生成调试信息 /DEBUG:FASTLNK:生成经过优化以使链接更快的调试信息 /DEBUG:FULL:生成经过优化以共享和发布的调试信息 |
生成程序数据库文件 | 在此框中指定程序数据库(PDB) 文件的名称。必须为“调试信息格式”选择/ZI 或/Zi | pdb文件生成文件以及名称 |
去除私有符号 | 如果不希望在PDB文件中包含私有符号,则在该框中指定PDB文件的名称。当使用任何生成PDB文件的编译器或链接器选项(如/DEBUG、/Z7、/Zd)生成程序映像时,此选项会创建第二个PDB 文件。或/Zi。此PDB文件省略您不希望交付给客户的符号。 | |
生成映射文件 | 通知链接器在链接过程中生成映射文件。默认设置为“否” | 是(/MAP) 否 |
映射文件名 | 如果选择“生成映射文件”,则可在该框中指定映射文件 | |
映射导出 | 在映射文件中包含导出函数。默认设置为“否” | 否 是(/MAPINFO:EXPORTS) |
对于大型项目,使用第三方提供的SDK文件,一般需要做以下工作:
1.设置包含的头文件目录
2.指定lib所在的文件目录
3.指定需要用到的lib文件
3、调试相关快捷键使用
快捷键 | 说明 |
---|---|
F5 | 开始调试 |
Shift+F5 | 停止调试 |
Ctrl+Shift+F5 | 重新启动调试 |
F10 | 逐过程 |
F11 | 逐语句 |
Shift+F11 | 跳出 |
Ctrl+F10 | 运行到光标处 |
Ctrl+Shift+F10 | 设置下一语句 |
F9 | 设置并切换断点 |
Ctrl+F9 | 禁用断点 |
Ctrl+Alt+I | 即时窗口 |
键入“>” | 即时窗口命令模式 |
>cls | 即时窗口清除缓冲区 |
4、调试过程设置以及窗口
1)断点
在开发人员的工具箱中,断点是最重要的调试技术之一。你可以在希望暂停调试器执行的任何位置设置断点。
- 普通断点
- 条件断点
- 函数断点
- 数据断点
- 临时断点
普通断点设置:
在需要设置断点的行按下F9即可
条件断点设置:
在普通断点的基础上,可为断点添加条件,当满足条件时断点才生效。设置方式如下:
①鼠标在断点处悬停点击设置按钮
②直接在断点行右键“断点”——“条件”
设置当i51时触发
出现如下变化说明设置条件断点成功
调试程序,当i51时断点生效
在达到条件断点时,可增加操作,如下:
设置条件断点的操作时,变量必须加{},否则会输出为字符串;可使用$来调用系统本身的变量进行输出
继续运行,查看输出窗口
2)自动和局部变量窗口
数组和对象在“自动变量”和“局部变量”窗口中显示为树形控件。选择变量名称左侧的箭头可展开视图,以显示字段和属性
3)监视 快速监视窗口
调试时,可以使用“监视”和“快速监视”窗口来监视变量和表达式。仅在调试会话期间,这两个窗口才可用。“监视”窗口在调试时可以一次显示多个变量
对变量i进行监视
4)调用堆栈
使用“调用堆栈”窗口可以查看当前堆栈上的函数或过程调用。
“调用堆栈”窗口显示每个函数的名称以及编写它所用的编程语言。函数或过程名称可能包含可选信息,如模块名称、行号、参数名称、类型和值。可以打开或关闭这些可选信息的显示。
前提是存在对应模块的pdb文件并已加载成功
在Visual Studio 中,打开“工具”> “选项”> “调试”> “符号”(或“调试”> “选项”> “符号”),在“符号文件(.pdb)位置”下
指定你希望调试器在启动时从“符号文件(.pdb)位置”加载的模块