一 . 名词的解释
-
编译器部分:
- MSVC: 微软出品,visual studio 默认的编译器
- gcc: GNU 出品,linux下的编译器
- Mingw: GNU出品,将gcc修改为支持Windows的编译器
-
调试器部分:
- GDB: GNU出品,linux下debuger工具
- GDB for mingw: 顾名思义,还是一个鸟样,为了支持windows的调试搞的工具
- WinDg:Debugging tool for Windows ,微软的东西,现在得在WDK 或者SDK下载。包含界面调试,支持内核模式跟用户态的形式,也就是电脑蓝屏能分析dump文件,还能跟踪到内核Kernel.dll
- CDB:Debugging tool for Windows ,安装完后,内部包含Windbg同时有CDB工具,这个工具就是仅支持 命令行。Windbg应该在使用的时候也用到它。
注:安装 Debugging tool for Windows 搜索一下就有了。需要注意一点是Win7的话下载安装在我的电脑失败,所以就把安装包解压找到WinSDKDebuggingTools_amd64 安装ok;
-
解释PDB文件:
简单来讲pdb文件就是记录断点的行号,文件名,建立程序运行与源代码的对应关系。其中gcc系列的编译器会将这些信息记录在exe、dll中,所以gcc同系列的编译器debug不需要pdb文件的支持,pdb文件也叫Symbol file 符号文件。(gcc系列指linux gcc ,MinGW) -
一般搭配:MSVC + CDB, Mingw + GDB for mingw
二. Qt Creator 添加src源码
网上搜索一大堆.安装qt的时候勾选source 或者 download.qt.io 下载;
MinGW 编译器只要添加源码后,GDB 设断点 F11 就能进入源码。
三. VS
-
VS添加源码 需要添加 pdb 文件。(需不需要添加Pdb文件,看对应得编译器,如 qt creator 使用msvc 编译器 就得使用 CDB 调试器,加上 pdb 文件才能debug进源码)
-
添加qt的pdb符号文件 debug -> options 如下图,
问题来了,pdb哪里来??
( symbol locations 记得加上plugins路径:D:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins) -
msvc编译器才需要 pdb 文件,那说明我们现在用的pdb文件本身就是msvc编译出来的(一句废话),那找qt啊! qt 提供debug.info 也就是pdb 下载。下载地址如下:(也可以自己编译源码时候得到)
-
根据自己对应得版本选择,我这里是msvc2017_64,Qt 5.14.2
下载完成后拷贝到Qt安装的根路径,选择自动解压。(或者解压后自己拷贝到相关路径,bin,lib,plugin等)主要是qtbase 跟 qttool,可以先下这两个文件。
根路径如图:
- 最后:配置好 pdb 文件后,跟 qt creator 一样,也得把qt src 源码包含进来。 右键解决方案
solution -> properties -> debug source files
- 仅根据个人理解整理以上内容以备健忘。最主要的是把那些概念理清。还有vs 默认的调试器应该是msvsmon 可以试试! vsjitdebuger.exe 这个应该是脱离vs 环境,双击启动app时 如有崩溃,那么就使用 vsjitdebuger.exe管理。done.
20220817更正:
5.14.2 安装的mingw库里没有debug版本。所以5.14.2这个版本使用mingw也调试不了源码。调试源码的大前提:有对应的debug dll!
20220819增加:
- macOS(m1)debug qt源码,除了qtCreator配置源码路径外,安装的qt也要有
debug
的库 - 我是自己编译5.15.配置 debug and release ,qtc是利用brew 安装),接着需要在项目 project ->build&run->run配置里将debug打开。
20231224增加(CMake管理的Qt项目):
- 保证Qt安装的时候包含源码以及包含pdb调试符号。(不管是自己编译还是在线安装)
- 设置 CMAKE_PREFIX_PATH ,指定Qt路径,包含Src文件夹 如: C:\Qt\Qt5.14.2\5.14.2
CMake管理项目方便很多.