VS2022 And QtCreator10 调试 Qt 源码教程

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


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


背景

源码:*.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 学习,附学习由浅入深的目录。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偕臧x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值