在开发过程中,我们经常用到调试功能,这样方便查找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
我的版本号对应的下载路径是:
Index of /online/qtsdkrepository/windows_x86/desktop/qt5_5120/qt.qt5.5120.debug_info.win64_msvc2017_64
下载完成后,将解压后的文件夹内对应编译器-对应的文件夹内的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内部的实现逻辑也是非常有帮助的。

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

  1. VS2017调试Qt源码

    文章目录 问题 分析 解决方式 方式一 解决二 参考 简 述: 前面用了两年 Linux,现切回来 win10 系统,略不习惯:感觉用 MSVC(VS2017) 和 win10 使用还有点不够利索,记 ...

  2. 在 VS 中调试 Qt 源码

    步骤 在解决方案上 右键 –> 属性 –> 通用属性 –> 调试源文件,将源码所在目录包含进去即可. 以 VS2013 为例,博主的源码路径是:C:\Qt\Qt5.8.0_msvc2 ...

  3. Android FrameWork学习(二)Android系统源码调试

    点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...

  4. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者"tingsking18"和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消 ...

  5. 使用vs2005进行(wince)DLL源码调试

    调试Dll也需要进到源码里面,进行单步调试.下面是使用vs2005进行wince DLL源码调试的步骤(可能我的方法麻烦了). ------------------------------------ ...

  6. Mac下下载android4.2源码,进行源码调试

    星期天在家研究了一下如何在mac下下载android4.2的源码并通过eclipse进行源码级别调试来更清晰的研究一下android的运行原理,具体步骤如下: 最后下下来了,但是我进行编译却没有通过, ...

  7. iOS之深入解析WKWebView的WebKit源码调试与分析

    一.前言 移动互联网时代,网页依旧是内容展示的重要媒介,这离不开 WebKit 浏览内核技术的支持与发展.在 iOS 平台下开发者们需要通过 WKWebView 框架来与 WebKit 打交道. 虽然 ...

  8. nginx 源码调试

    nginx 源码调试 这段时间正在学习nginx源码,看到一贴子的提问 (帖子:http://www.oschina.net/question/2711991_2165566?p=1#AnchorAn ...

  9. Activemq源码、编译、导入idea、源码调试总结

    1.在本地下载源码 在GitHub官网搜activemq,找到排名第一的,并打开,如图所示,拷贝url地址. activemq托管地址:https://github.com/apache/active ...

最新文章

  1. 华为云计算——FusionCompute创建虚拟机
  2. php简单网站源码包含数组_PHP 数组
  3. Pytorch 编译cpp、cuda扩展遇到的问题
  4. 推荐三款windows下提高工作效率的软件(altrun、everything、ditto)
  5. 使用盒式布局实现登录界面
  6. gps掩星计算matlab,《GPS测量与数据处理》_李征航_武汉大学出版社.pdf
  7. 微信怎么制作朋友圈H5链接
  8. 如何使用navicat premium打开外部.sql文件
  9. Unity用GL接口实现画格子
  10. 北京龙庆峡自助游及攻略
  11. onload 属性的作用
  12. 双足机器人课设报告_双足竞步机器人-智能步行者设计-技术报告
  13. 基于Html5的兼容所有主流浏览器的在线视频播放器videoJs
  14. 从一个表格render方法问题看React函数组件的更新
  15. 关于大一暑假考核的复习总结
  16. html5开卷考试,美国AP开卷考试
  17. 又老了一岁,祝自己生日快乐。。。
  18. 记一次APP去壳破解重新打包
  19. Unknown error 1146的解决办法:
  20. 与智者同行,你会不同凡响;与高人为伍,你能登上巅峰

热门文章

  1. DBeaver 安装
  2. Multi-layered tree crown extraction from LiDAR data using graph-based segmentation
  3. Carl‘s Car Wash
  4. 物联网智能家电之如何制作远程控制开关
  5. 京东集团副总裁李大学:像CEO一样思考
  6. 华为:交换机端口汇集
  7. 甜甜甜!HTML5 快速实现一颗告白爱心树!| 原力计划
  8. 【JAVA】基本图形界面设计
  9. 学习笔记2————文本编辑器Vim
  10. NanOlogy™发布吸入NanoPac治疗肺癌的阳性临床前数据