简 述: 记录使用 Visual Studo 2022 和 QtCreator10 调试 Qt 5.15 源码和 加载 .pdb 的方法。

[TOC]


本文初发于 “偕臧的小站“,同步转载于此。


背景

源码:*.h *.cpp

符号调试包:*.pdb (属 Windows 专有)

动态链接库: *.dll

静态链接库: *.lib (通常是前者,也可以是 .dll 的符号信息,编译时刻使用)

your.exe 可以进行单步调试 == your源码 + your.pdb + your.dll + microsoft.pdb + microsoft.dll + 这些文件路径全部设置正确


IDE 调试 Qt 源码

以下两个 IDE 均使用 ”MSVC 2022 + Qt 5.15.2” 来编译项目作为示范,且生成的 x86 的 Debug 模式的 your.exe。


Visual Studio 2022

  1. Visual Studio 2022 依次打开 菜单栏的【Tools】【Options】,进入【Debugging】【Symbols】添加 Qt 的符号调试包路径

  2. 右键打开解决方案的属性【Solution】【Properties】,【Debug Source Files】添加源码路径

  3. 编译工程,模式为 Debug、Win32,设置断点【F9】后,开启运行调试【F5】,卡住断点,再怕【F11】 进入任何一个 Qt 源码的函数调试, QWidget::show() 函数为例

  4. 若是每次 【F9】调试加载很慢,是因为每次从微软服务器拉取这些文件到本地比较耗时。也在步骤1中,和我一样取消【Microsoft Sysbol Servers】前面的勾,调试很快且顺滑,且不影响正常的软件调试功能。


Qt Creator 10.0.1

  1. Qt Creator 10.0.1 依次打开 菜单栏的【Edit】【Preferences】,进入【Debugger】【Source Path Mapping】【Add Qt sources…】添加 Qt 的源码路径,此处是调试需要

  2. 【Debugger】【CDB Paths】的 “Symbol Paths” ,”Source Paths” 添加 MSVC 的符号调试包的路径和源码路径。

  3. 【Enviroment】【Locator】【Custom】添加 Qt 的源码路径和自定义的文件路径,作用是便于快捷键直接定位具体文件。注意此处路径分隔符号是 /

    快捷键【Ctrl + K】快速定位左下角,然后搜索 Qt 源码的文件名以及自定义项目的文件名称,迅速切换,体验极佳

  4. 编译工程,模式为 Debug、32bit,设置断点【F9】后,开启运行调试【F5】,卡住断点,再怕【F11】 进入任何一个 Qt 源码的函数调试, QWidget::show() 函数为例


排查思路

若用 VS2022 / QtCreator 10.0.1 单步调试 Qt 源码失败,排查原因

  1. 安装 Qt 时候亦下载了 Qt 源码和 符号调试包
  2. your.exe + your.dll 生成到你设置的预期的路径,且放在同一级
  3. 如 Qt5Guid .dll (Debug 模式下 dll 名称含 d)
  4. 加载了 pdb (确定版本没下错)
  5. 解决方案加载了 src源码
  6. 加载了符号调试包路径
  7. 编译的 your.exe 是对应 MSVC、 x86 且是 debug 模式
  8. 若是 x64 或者其它 Kit 调试原理相同

姊妹篇

若是 IDE 调试时发现没有 Qt 的符号调试包,教程可参考姊妹篇一;以及学会如何查看 对应模块是否加载


系列

QtExamples

欢迎 star ⭐ 和 fork 🍴 这个系列的 C++ / QT / DTK 学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!”