简 述: 记录使用 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
Visual Studio 2022 依次打开 菜单栏的【Tools】【Options】,进入【Debugging】【Symbols】添加 Qt 的符号调试包路径
右键打开解决方案的属性【Solution】【Properties】,【Debug Source Files】添加源码路径
编译工程,模式为 Debug、Win32,设置断点【F9】后,开启运行调试【F5】,卡住断点,再怕【F11】 进入任何一个 Qt 源码的函数调试, QWidget::show() 函数为例
若是每次 【F9】调试加载很慢,是因为每次从微软服务器拉取这些文件到本地比较耗时。也在步骤1中,和我一样取消【Microsoft Sysbol Servers】前面的勾,调试很快且顺滑,且不影响正常的软件调试功能。
Qt Creator 10.0.1
Qt Creator 10.0.1 依次打开 菜单栏的【Edit】【Preferences】,进入【Debugger】【Source Path Mapping】【Add Qt sources…】添加 Qt 的源码路径,此处是调试需要
【Debugger】【CDB Paths】的 “Symbol Paths” ,”Source Paths” 添加 MSVC 的符号调试包的路径和源码路径。
【Enviroment】【Locator】【Custom】添加 Qt 的源码路径和自定义的文件路径,作用是便于快捷键直接定位具体文件。注意此处路径分隔符号是
/
快捷键【Ctrl + K】快速定位左下角,然后搜索 Qt 源码的文件名以及自定义项目的文件名称,迅速切换,体验极佳
编译工程,模式为 Debug、32bit,设置断点【F9】后,开启运行调试【F5】,卡住断点,再怕【F11】 进入任何一个 Qt 源码的函数调试, QWidget::show() 函数为例
排查思路
若用 VS2022 / QtCreator 10.0.1 单步调试 Qt 源码失败,排查原因
- 安装 Qt 时候亦下载了 Qt 源码和 符号调试包
- your.exe + your.dll 生成到你设置的预期的路径,且放在同一级
- 如 Qt5Guid .dll (Debug 模式下 dll 名称含 d)
- 加载了 pdb (确定版本没下错)
- 解决方案加载了 src源码
- 加载了符号调试包路径
- 编译的 your.exe 是对应 MSVC、 x86 且是 debug 模式
- 若是 x64 或者其它 Kit 调试原理相同
姊妹篇
若是 IDE 调试时发现没有 Qt 的符号调试包,教程可参考姊妹篇一;以及学会如何查看 对应模块是否加载
系列
欢迎 star
⭐ 和 fork
🍴 这个系列的 C++ / QT / DTK
学习,附学习由浅入深的目录,这里你可以学到如何亲自编写这类软件的经验,这是一系列完整的教程,并且永久免费!”