[QT_055]设置QT源码调试(qtc+vs/mingw+msvc)

        在开发过程中,我们经常用到调试功能,这样方便查找Bug;Qt是一个开源的框架,可以看到源码。虽然但大部分情况下,我们开发时,只是使用,并没有调试它的源码,但如果想深入了解Qt的一些机制原理,可以配置环境调试它的源码。通常,没有勾选默认安装Qt后,编译器默认安装的是MINGW,调试器为GDB。这些都是默认安装好的。但是,如果你有需要使用MSVC编译器,不仅要安装MSVC编译器,还需要安装对应的调试器CDB。 本文介绍如何配置Qt源码的调试环境。

下图是默认安装Qt后的MINGW编译器和GDB调试器配置:

 

 下图是使用MSVC编译器及对应的CDB调试器配置:

 

 注意:下文示例均已MSVC2017_64编译器配置调试为例。实际上使用GDB调试器,不需要下载pdb文件,只需要将源码路径映射添加进去,即可调试。MSVC稍微复杂点,需要将pdb文件放到对应目录才可以调试。

0.调试准备

1.安装Qt 时候,勾选Source选项。

如下图所示:

没有勾选的,可以打开MaintenanceTool.exe工具,选择 [添加或删除组件] ,勾选上Source,点击[下一步],更新即可。

2.下载pdb文件(手动添加需要的文件)

首先说明,没有正确版本的qt库相关的dll对应的dbg文件就无法调试进入qt的源码中!!!所以在下载的时候,一定要选择好自己对应的版本。

Qt所有版本的总目录:

https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/

在该路径下根据 Qt 版本号查找对应版本,我的版本是 5.12.0 ,对应的版本号就是 qt5_5120
我的版本号对应的下载路径是:
下载完成后,将解压后的文件夹内对应编译器-对应的文件夹内的pdb文件放到Qt安装目录相同的文件夹下。例如下图所示:

 

如何查找下载自己对应的版本文件?
第一步:

 

第二步:

 第三步:

 

1.我的环境

1.QT版本:5.12.0

2.操作系统:Windows10

3.使用编译器:MSVC2017_64

2.如何添加调试?

2.1手动添加文件(需要将刚才下载的pdb文件已经放到对应的目录中

2.1.1 Qt Creator

点击顶部菜单栏->工具->选项->调试器->概要->源码路径映射->添加Qt源码->应用

 

2.1.2 Visual Studio 

第一步:

右键解决方案,选择[属性]–> [通用属性]–> [调试源文件],在窗口内添加源码路径。

第二步:

 [设置]–>[工具]->[选项]-> [调试]-> [符号] ,在右侧 符号文件(.pdb位置)中添加 pdb目录。

(此处我是直接把pdb文件放在对应的bin、lib目录下)

 

2.2联网下载

2.2.1使用Qt Creator添加下载源(设置临时存储库)

这里设置源进行下载,其实等同于我们上面进入网站去手动下载。仔细看,设置的几个存储库的地址,几乎就是我们上面下载pdb的地址。

一些常用的源:

 qt安装包下载_开源镜像站-阿里云 
Index of qt/ - SJTUG Mirror Index 
Index of /qtproject/ 

我的源设置如下:

https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_mingw/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5120/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/tools_qtcreator/
https://mirrors.tuna.tsinghua.edu.cn/qt/online/qtsdkrepository/windows_x86/desktop/qt5_5120_src_doc_examples/

注意:有时候下载的pdb并不是很全,还是需要再手动去下载添加。如果使用不同的源,只需要把前面的 https://mirrors.tuna.tsinghua.edu.cn/ 源路径修改,后面的路径不需要改变。

2.2.2勾选Qt Debug Inforation Files,让其自动下载pdb文件

下载的源设置好以后,还需要勾选Qt Debug Inforation Files选项去下载pdb文件。由于前面我们已经勾选了对应的编译器,所以,下载的时候会根据你所选的编译器去下载对应的pdb文件。

 

2.2.3前两步完成以后,依旧还需要按照2.1.1步骤添加源码路径映射

即:点击顶部菜单栏->工具->选项->调试器->概要->源码路径映射->添加Qt源码->应用。

2.2.4调试

1.新建一个测试项目,按F9或者直接在对应的行号前面点击一下,出现红点,即表示添加断点成功。

 

2.点击左下角带有虫子的图标,即表示调试项目。等待程序进入断点即可。进入Qt内部的方法,就可以看到内部源码了。

  

3.修改源码生效问题

        首先应该明白一点,修改源码后,必须重新编译你修改后的源码,生成对应的dll来替换原来的dll;Qt 也是调用dll来工作的,毕竟它只是个编辑器,外加了编译和调试等一些功能而已。然而这里经常出问题的是,既然要编译源码,那么编译器的选择以及一些编译时的一些参数设置,如果不熟悉,极有可能编译失败!就像下面这段总结说的那样好,所以非必要,不建议编译源码。

如果在修改Qt源码后,发现程序运行时并没有生效,可能有以下几个原因:

  1. 未重新编译Qt库:在修改了Qt源码后,需要重新编译整个Qt库,才能使修改生效。确保已经按照正确的步骤重新编译了整个Qt库。

  2. 编译器版本不兼容:如果使用的是其他版本的编译器而非官方推荐的版本进行重新编译,可能会导致无法生效。请确认使用的编译器版本是否与官方推荐的一致。

  3. 编译选项设置错误:在进行重新编译时,需要注意一些选项设置是否正确。例如,在使用qmake生成Makefile文件时,需要指定正确的参数来包含你所做出的修改

  4. Qt库安装路径问题:在重新编译过程中,请确保将新版Qt库安装到一个新目录下,并将该目录添加到环境变量中。如果你仍然使用旧版Qt库,则不会看到任何更新。

  5. 可能还存在其它原因造成没有生效,可以先检查代码是否真正被调用到、符号表是否匹配等情况。

4.总结补充

其实Qt添加配置源码调试的方法是多种的,只是不同的编辑环境情况稍有不同,几乎大同小异。相信大家走到源码编译这一步,就不会是调试这么简单的情况,很大程度上需要修改其中的某个bug或者功能。如果说没有这样的需求,那做这一步对于我们学习Qt内部的实现逻辑也是非常有帮助的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值