windows 下使用 mingw编译器 调试时 无法跟进源码

最近在公司使用QT 开发,官方在线下载的 安装的QT mingw 都是没有debug版本的 由于没有debug版本动态库

所以你调试的时候压根就无法跟进QT源代码里,那么找问题的时候 大部分都是跟到汇编代码了。

由于刚来公司不久,人微言轻。我建议统一使用msvc编译 得到拒绝后 没有办法只能重新编译mingw debug版本 了。

下面记录下使用mingw 编译debug 版本步骤

1、 首先准备环境要做好

Perl version 5.12
Python version 2.7
Ruby version 1.9.3

这些东西要先安装好

请自行百度 安装

2、QT环境已经安装好了

打开QT5.15.2(Mingw8.1.0 64-bit) 命令行工具

3、在命令行工具中 切换到 你QT安装的目录\版本号\src

执行如下代码

configure -debug -platform win32-g++ -opensource -confirm-license -opengl desktop -prefix "你的qt安装目录/qt版本号"

4、开始构建

mingw32-make
可能会报如下错误
cannot find -lpnp_basictoolsd
collect2.exe: error: ld returned 1 exit status
你QT安装的目录\版本\Src\qtbase\examples\widgets\tools\plugandpaint 下的 pro 文件 编译一个 debug 版本

继续编译

mingw32-make

继续报错 接着解决

C:\Users\HotPixel-2\AppData\Local\Microsoft\WindowsApps\python.exe D:/Qt/5.15.2/Src/qtdeclarative/src/3rdparty/masm/yarr/create_regex_tables > .generated\debug\RegExpJitTables.h
mingw32-make[4]: *** [Makefile.Debug:1059: .generated/debug/RegExpJitTables.h] Error 9009

找到RegExpJitTables.h 生成的所在目录 自己手动执行

python.exe D:/Qt/5.15.2/Src/qtdeclarative/src/3rdparty/masm/yarr/create_regex_tables > RegExpJitTables.h

继续编译

mingw32-make

5、如果构建过程没有错误执行 安装命令即可

mingw32-make install

6、安装完以后 执行aaa 命令时 设置的-prefix参数的目录下 会多出这些文件夹

将这些文件夹 复制到 你QT 安装目录/版本号/ 目录下新建一个 mingw84_64_debug 文件夹

如下图目录结构

7、打开QT creator 菜单 - 工具-选项-kits

添加你编译好的这个mingw 64 debug 版本环境

这个时候在选中 Kits 下的 Kits 项 clone 一份 mingw64 默认的 改下名称 和 QT版本

到此即可使用mingw 编译器 完美调试 跟进QT 源代码 定位问题了

  • 打开你的项目 选择你新增加的 mingw 64 debug 版本的环境

  • 看看效果

    原来这段线程池的start 函数我 按F11 是怎么也进不去的

    现在按下F11完美进入

    当然QT 需要设置调试源码的路径步骤也不能少

参考文章如下:

https://doc-snapshots.qt.io/qt5-5.15/windows-building.html

windows 下使用 mingw编译器 调试时 无法跟进源码的更多相关文章

  1. QT 如何在调试时能进入源码方式(MacOS)

    最近在学习QT, 遇到一些crash, 也没看过QT源码啊, 就想类似Java一样, 在出错时进入源码跟踪一下, 但是QT和Java太不一样了, 死活进不去. 研究了几天, 发现本来是很简单的事情, ...

  2. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  3. windows下使用mingw和msvc静态编译Qt5.15.xx

    windows下使用mingw和msvc静态编译Qt5.15.xx 下载并安装相关依赖软件 Python version 2.7 https://www.python.org/downloads/ ( ...

  4. Windows下搭建FFmpeg开发调试环境

    背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可. 但是如果你想调试FFmpeg内部相关的逻辑,或 ...

  5. 在Windows下使用MinGW静态编译Assimp

    使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...

  6. 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  7. XposedNoRebootModuleSample 不需要频繁重启调试的Xposed 模块源码例子

    XposedNoRebootModuleSample(不需要频繁重启调试的Xposed 模块源码例子) Xposed Module Sample No Need To Reboot When Debu ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码] Unity 2.x依赖注入(控制反转)IOC,对 ...

  9. erlang下lists模块sort(排序)方法源码解析(一)

    排序算法一直是各种语言最简单也是最复杂的算法,例如十大经典排序算法(动图演示)里面讲的那样 第一次看lists的sort方法的时候,蒙了,几百行的代码,我心想要这么复杂么(因为C语言的冒泡排序我记得不 ...

随机推荐

  1. 【XSS-labs】level 16-20

    Level 16 查看源码:发现 空格 / 和script都被转义了. 用img标签的onerror事件(在加载外部文档或图片出错后触发),空格用%0a绕过,  payload如下: <img% ...

  2. 支持初始化数据的Zookeeper Docker镜像

    最近在做一个演示项目 https://github.com/cnscud/cavedemo, 自然为了方便, 也做了docker打包, 发现zookeeper的镜像没有导入初始化数据的功能, 于是自己 ...

  3. NOIP 模拟 $20\; \rm y$

    题解 \(by\;zj\varphi\) 首先发现一共最多只有 \(2^d\) 种道路,那么可以状压,(不要 \(dfs\),会搜索过多无用的状态) 那么设 \(f_{i,j,k}\) 为走 \(i\ ...

  4. SSM自学笔记(七)

    14.MyBatis的多表操作 1.MyBatis的多表操作 1.1 一对一查询 一对一查询的模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单 ...

  5. C# 正则表达式的重点知识 1

  6. spring的异常处理

    出自于:https://blog.csdn.net/he90227/article/details/46309297   ---- 利用Spring进行统一异常处理的两种方式. 原文:https:// ...

  7. 梯度下降做做优化(batch gd、sgd、adagrad )

    首先说明公式的写法 上标代表了一个样本,下标代表了一个维度: 然后梯度的维度是和定义域的维度是一样的大小: 1.batch gradient descent: 假设样本个数是m个,目标函数就是J(th ...

  8. Object--Date--calendar--System--StringBuilder--基本数据类型包装类型

    Object java.lang.Object类是Java语言中的根类,即所有类的父类 默认toString()方法打印的是对象在堆中的地址值 默认equals()方法比较的也是地址(String中对 ...

  9. ES6——简单的多态

    简单的多态 多态: 1.同一个接口,在不同情况下做不一样的事情:相同的接口,不同的表现: 2.接口本身只是一组定义,实现都是子类里面:需要子类去实现的方法(子类只需重写与父类同名的方法,即可达到覆盖的 ...

  10. 证明:(a,[b,c]) = [(a,b),(a,c)]

    这题是潘承洞.潘承彪所著<初等数论>(第三版)第一章第5节里一个例题,书中采用算术基本定理证明,并指出要直接用第4节的方法来证是较困难的. 现采用第4节的方法(即最大公约数理论里的几个常用 ...