C++(Qt)软件调试---符号转换工具cv2pdb (24)

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、相关地址🐐)
  • [@toc](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [1、概述🐜](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [2、下载cv2pdb🪲](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [3、qt程序使用cv2pdb🦧](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [1.1 方法1:命令行](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [1.2 方法2:配置为qt构建步骤](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [1.3 方法3:配置为qt creator外部工具和快捷键](#文章目录 C++(Qt)软件调试---符号转换工具cv2pdb (24) @[toc] 1、概述🐜 2、下载cv2pdb🪲 3、qt程序使用cv2pdb🦧 1.1 方法1:命令行 1.2 方法2:配置为qt构建步骤 1.3 方法3:配置为qt creator外部工具和快捷键 4、相关地址🐐)
  • [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🪲

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、相关地址🐐

相关推荐
飞天狗11116 小时前
2025第十六届蓝桥杯c/c++B组国赛题解
c语言·c++·算法·蓝桥杯
努力努力再努力wz16 小时前
【Qt入门系列】:QLabel控件详解:从文本显示到图片展示,再到内容布局与伙伴机制
android·开发语言·数据结构·数据库·c++·qt·mysql
散峰而望16 小时前
【算法练习】算法练习精选:从 Phone numbers 到 Decrease,覆盖字符串、模拟、图论思维题
数据结构·c++·算法·贪心算法·github·动态规划·图论
薇茗16 小时前
【C++】 基础语法篇
c++·c++基础语法
并不喜欢吃鱼16 小时前
从零开始 C++----- 十二【C++ 数据结构】map/set 全解析:从使用到红黑树底层模拟实现
开发语言·数据结构·c++
不会C语言的男孩16 小时前
C++ Primer Plus 第17章:输入、输出和文件
开发语言·c++
j_xxx404_16 小时前
Linux 线程同步硬核解析:从条件变量、阻塞队列到信号量环形队列
linux·运维·服务器·c++·人工智能·ai·中间件
Zhang~Ling16 小时前
二叉搜索树(BST)详解:插入、删除、查找与 Key/Value 实战场景
数据结构·c++·算法
小小de风呀17 小时前
de风——【从零开始学 C++】(十)vector的模拟实现
开发语言·c++
爱和冰阔落17 小时前
【Linux系统编程】环境变量深度解析——从 fork 继承到 export 内建命令,两张表打通进程上下文
linux·c++·环境变量·系统调用