推荐链接 :
https://blog.csdn.net/qq_51470638/article/details/143437842

 

1. 设置源代码路径

1、路径:C:\Qt\Qt5.15.18\5.15.18\Src
2、加入到 : 项目解决方案 ->  属性 中,选择 项目调式源文件,增加一个路径;

 

2. 设置调试PDB路径

1、点击 上方的工具 -> 调式 -> 符号 ;

2、加入pdb和dll的路径

C:\Qt\Qt5.15.18\5.15.18\msvc2019_64\bin
C:\Qt\Qt5.15.18\5.15.18\msvc2019_64\
C:\Qt\Qt5.15.18\5.15.18\msvc2019_64\plugins\platforms
C:\Qt\Qt5.15.18\5.15.18\msvc2019_64\plugins

 

3. 开始调式

调式堆栈处,直接点击导入外部代码!

 

4. 下载源码

git clone git@github.com:qt/qtbase.git

 

5. 添加系统环境路径

开始菜单 → 设置 → 系统 → 关于 → 高级系统设置  sysdm.cpl

D:\Qt\Qt5.15.18

 

 

您提供的配置步骤,本质是为调试器补全构建(编译)时产生的“调试上下文”,以便在运行时(调试时)能正确地将二进制指令反向映射回人类可读的源代码

这个过程的核心在于理解调试信息的产生、存储和使用。下面分步解析其原理:

1. 设置源代码路径 – “告诉我源代码在哪里”

  • 原理:当编译器(如MSVC)编译带调试信息的程序时,它会把源代码文件的绝对路径 记录到调试信息中。调试器(如VS的调试引擎)需要根据这个路径去加载对应的源文件,以便在断点处、单步执行时显示源代码。
  • 问题:您项目的开发环境(您的电脑)与当初编译Qt库的环境(Qt官方或您的构建机器)路径不一致。记录在Qt库调试信息中的源码路径很可能是 D:\\\\Qt\\\\build-xxx\\\\... 或官方的构建服务器路径,而不是您本地 C:\\\\Qt\\\\... 的路径。
  • 解决:通过设置源代码路径,您是在告诉调试器:“当你找不到记录中的源码时,也请到我指定的这个目录下去找同名的文件。” 这相当于一个路径重定向映射,使得调试器能够成功定位并显示Qt内部的源代码。

2. 设置调试符号(PDB)路径 – “给我翻译词典和地图”

这是最关键的一步,触及Windows平台原生代码调试的本质。

  • PDB文件是什么? PDB是程序数据库文件,它是调试信息的物理载体。它独立于可执行文件(.exe/.dll)存在,包含了以下核心信息:
  1. 变量和函数的符号名:将内存地址映射为有意义的名称(如 0x00401000 -> QWidget::paintEvent)。
  2. 类型信息:类、结构体、枚举的定义,成员变量和函数。
  3. 源代码映射:将机器指令的地址映射到源代码文件和行号(如 0x00401000 -> qwidget.cpp 第123行)。
  4. 帧指针省略信息:帮助调试器在优化过的代码中正确遍历调用堆栈。
  • 为什么需要手动指定路径?
  1. 部署分离:Qt的运行时文件(.dll)被部署到你的程序目录或系统路径,但与之配套的 .pdb 文件通常保留在开发套件目录中(如 C:\\\\Qt\\\\...\\\\bin)。调试器默认不会去那些地方搜索。
  2. 调试器的工作原理:当调试器加载你的程序和一个动态库(如 Qt5Widgets.dll)时,它会尝试寻找同名的 Qt5Widgets.pdb 文件。搜索顺序通常是:程序所在目录 → 符号缓存目录 → 你明确指定的“符号路径”。
  3. 插件调试:Qt大量使用插件架构(如 platforms/qwindows.dll)。这些插件也是独立的模块,有各自的PDB文件。要深入调试到插件内部(例如GUI事件处理),就必须让调试器也能找到它们的PDB。因此需要添加插件目录。

本质概括

这个配置过程的本质是:在调试环境中,重建(或匹配)构建环境

  • 构建时:编译器读取 C:\\\\Qt\\\\...\\\\Src 下的源代码,生成二进制文件(.dll/.exe)和配套的“翻译词典/地图”(.pdb)。.pdb里记录了源码的原始绝对路径
  • 调试时:调试器加载二进制文件,并尝试:
  1. 加载“翻译词典”:根据你的“符号路径”设置,找到对应的 .pdb 文件。有了它,内存地址和机器码才能被解析为函数名、类、行号等信息。这是从“机器视角”到“程序员视角”的第一次翻译。
  2. 显示源代码:根据.pdb中记录的原始路径,并结合你设置的“源代码路径”进行重定向,去找到并打开具体的 .cpp 文件。这是将“符号/行号”最终呈现为“可阅读的源代码”的第二步。

总结

  • 设置源代码路径:是为了解决源码位置的匹配问题。
  • 设置PDB符号路径:是为了解决调试信息本身的加载问题,这是所有高级调试功能(查看变量、调用堆栈、断点命中)的基础。

没有这些配置,调试器面对Qt库就相当于在“读天书”——它只能看到一堆无名的内存地址和汇编指令,无法与Qt的源代码逻辑联系起来。配置完成后,你就能像调试自己写的代码一样,深入Qt库内部进行单步跟踪、查看内部变量,这对于理解Qt工作机制或排查复杂问题至关重要。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。