C++(Qt)软件调试---符号转换工具cv2pdb (24)
C++(Qt)软件调试—符号转换工具cv2pdb (24)
文章目录
- C++(Qt)软件调试---符号转换工具cv2pdb (24)
- @[toc]
- 1、概述🐜
- 2、下载cv2pdb🪲
- 3、qt程序使用cv2pdb🦧
- 1.1 方法1:命令行
- 1.2 方法2:配置为qt构建步骤
- 1.3 方法3:配置为qt creator外部工具和快捷键
- 4、相关地址🐐
文章目录
- C++(Qt)软件调试---符号转换工具cv2pdb (24)
- @[toc]
- 1、概述🐜
- 2、下载cv2pdb🪲
- 3、qt程序使用cv2pdb🦧
- 1.1 方法1:命令行
- 1.2 方法2:配置为qt构建步骤
- 1.3 方法3:配置为qt creator外部工具和快捷键
- 4、相关地址🐐
更多精彩内容 |
---|
👉内容导航 👈 |
👉C++软件调试 👈 |
1、概述🐜
windows下C++程序出现异常最常用的调试方式就是分析Dump文件,而调试Dump需要使用到pdb符号表,那是不是说只有MSVC编译的程序才能调试dump呢,不是,MinGW编译的程序也可以,不过步骤复杂一些;
MinGW编译的程序生成的符号表是DWARF 格式,Windbg不支持,想要使用WinDbg调试MinGW生成的程序,就需要使用cv2pdb 工具将DWARF 格式符号表转成PDB符号表,然后就可以使用Windbg进行调试了。
演示环境:
-
系统:
- Windows11
-
开发环境:
- Qt
-
编译器:
- MinGW64
2、下载cv2pdb🪲
- 下载cv2pdb
- 解压后直接使用,无需安装。
3、qt程序使用cv2pdb🦧
这里有3中使用方式,各有优缺点。
方法1:使用命令行
cv2pdb.exe name.exe
生成,这种方式生成的pdb和exe的时间戳是不同的,所以部分调试工具无法使用,而windbg需要设置不校验时间戳才可以使用。方法2:配置到qt构建步骤中,在编译程序时自动生成pdb文件,这种方法生成的pdb文件和exe时间戳相同,并且不需要命令行操作,但是不支持在Qt Creator中debug调试。
方法3:配置为qt creator外部工具,并设置快捷键,生成的pdb和exe时间戳不同,但是不需每次都使用命令行运行。
1.1 方法1:命令行
- 创建一个Qt工程,使用mingw编译编译生成,使用debug模式进行编译,保留调试符号;
- 在可执行程序所在路径下,鼠标右键打开终端;
- 使用
D:\Qt\cv2pdb-0.52\cv2pdb.exe .\TestCrash_1.1.0.exe
命令将TestCrash_1.1.0.exe中的符号表转成pdb格式; - 注意:可执行程序只能生成一次pdb,MinGW编译生成的可执行程序符号表是包含在exe文件中的,生成pdb后,exe中就不再包含调试符号了。
1.2 方法2:配置为qt构建步骤
-
创建一个qt工程,选择mingw编译器,debug模式;
-
选择【项目】,【编译器】【构建】;
-
在【构建的步骤】处选择【添加构建步骤】【custom Process Step】;
-
在【命令】栏输入cv2pdb路径;
-
在【参数】栏点击右侧图标,选择
Executable:FilePath
,这个宏表示生成的可执行程序路径,不同版本qt creator之间名称有一些区别; -
在编译工程时就会自动生成pdb符号文件。
1.3 方法3:配置为qt creator外部工具和快捷键
-
将cv2pdb配置为qt creator的外部工具,并且设置快捷键;
-
点击【编辑】【preferences…】,打开首选项。
-
选择【环境】【外部工具】【添加】,设置名称为cv2pdb,分别设置cv2pdb路径和可执行程序宏,点击【应用】;
-
打开【首选项】,选择【环境】【键盘】;
-
输入
cv2
进行过滤,选中Tools中的cv2pdb行; -
点击【Record】后按下需要使用的快捷键,如果快捷键被使用了会有红色提示;
-
设置完成后点击【应用】。
-
设置完成后使用Mingw编译生成可执行程序;
-
点击【工具】【外部】【cv2pdb】或者按键设置的快捷键,就可以便捷的将MinGW生成的可执行程序生成pdb符号文件了。
-
使用效果如下所示:
4、相关地址🐐
- C++(Qt)软件调试—无法校验pdb时间戳(23)-CSDN博客
- cv2pdb下载地址