Qt源码调试步骤记录

1.源码:

两种方式,要么安装qt时选择source,要么从官网下载源码,然后在qt creator中设置路径。二选一即可。我选的第二种。

1.1.第一种,安装时选择source:

1.2.第二种,下载源码+设置路径:

我用的qt版本是5.14.2,所以源码路径是:

https://download.qt.io/archive/qt/5.14/5.14.2/single/qt-everywhere-src-5.14.2.zip

解压缩以后,这种qt creator中设置路径。“工具”》“调试器”》“概要”:

按照图片中标记的数字顺序操作,主要是路径,直接是源码根目录即可。

到这里,qt源码本身就设置好了。要像调试自己代码一样可以打断点逐句调试,还需要pdb调试信息(符号表)。

2.调试信息:

所谓调试信息也是一些文件,我认为就相当于一些索引锚点,逐一对应了代码位置,所以调试的时候才有断点和逐句调试。显然这东西与源代码有关,qt有多少的代码模块,就得相应有多少调试信息。从官网下载地址就能看出来。而且它是和编译器相关的。

https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5142/qt.qt5.5142.debug_info.win64_msvc2017_64/5.14.2-0-202003291224qtbase-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64-debug-symbols.7z

就如上面的链接这样,我下载的是win64下的5.14.2,msvc2017编译器相关的debug_info。本来我用的编译器是mingw73_64位,但是我没找到相关的debug_info,用msvc一样道理。

但是注意,下载那里有很多debug_info,看名字就知道,跟qt源码对应的,我只下载了qtbase相关的,如果真实项目中需要,再对号入座就行了。

下载以后解压缩, 一看就知道,正好对应qt安装的编译器目录层级,复制过去合并就行了。

比如我本机的路径是D:\Qt\Qt5.14.2\5.14.2\msvc2017_64,把刚才解压缩的目录复制过来合并即可。

至此,准备工作已经做好了。可以直接开始调试。

3.调试:

随便新建一个项目,但是调试的时候,编译器一定的要和debug_info使用的一样。比如上面我下载的msvc2017,那么调试时也要选择msvc2017。

在main函数的a.exec那里打个断点,然后运行程序。

会发现下面的“WinMain”居然是亮色的,可以跟踪进去了。点进去看看。

可以看到main函数被调用的过程。

回到main函数,按f11进入细节。

然后就不用细说了。可以一直f11跟踪下去。

但是要注意,它不能像调试自己代码一样直接转到定义。比如上面这样,把鼠标移动到return QGuiApplication::exec();的exec那里,按住ctrl直接点击的话,它不是直接跳转到这个exec函数体定义,而是跳转到声明。只能接着按f11跟进去,然后再按ctrl+点击就可以在声明和定义之间切换了。

就按上面说的,一直跟踪下去,发现exec函数最根本是这样的:

是不是跟我们写多线程时,使用的事件循环一样啊?此处顺便提及一下我以前写的博客记录,可以前后联想一下。

【Qt线程-2】事件循环(QCoreApplication::processEvents,exec)的应用-CSDN博客

其实,继续跟踪qt的事件循环处理,会发现它最终本质就是手册里说的那样,其实是消息队列处理。再往深的说线程和movetothread,本质上还是基于消息队列。

4.总结:

所以,源码调试多好玩,可以深入学习和理解qt的运作机制。大家一起动手来玩吧。

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux QT平台上调试RTKLIB源码的过程中,首先需要确保已经正确安装了QT和相关的开发环境。接下来,可以按照以下步骤进行调试: 1. 编译RTKLIB源码:根据提供的RTKLIB源码,可以使用QT的编译工具链进行编译。在终端中进入RTKLIB源码的目录,输入以下命令进行编译:qmake && make。 2. 配置调试环境:在QT开发环境中,打开RTKLIB的工程文件(通常为.pro文件)。在项目设置中,确保已经选择了正确的编译器和平台。 3. 设置断点:在源码中选择要调试的关键代码行,右键选择“设置断点”。这样,在程序运行到该行时,程序会自动停下来,方便我们查看变量的值和程序的执行流程。 4. 启动调试:点击QT开发环境中的调试按钮,开始运行调试。如果一切正常,程序将在第一个断点处停下来。 5. 单步调试:使用调试工具栏上的按钮,逐行执行代码。可以观察变量的值变化并检查程序流程。特别是在关键算法执行时,可通过单步跟踪查看每一步的结果。 6. 查看变量值:在QT调试窗口中,可以查看已设置断点处的变量的值。可以在变量窗口、观察窗口、局部窗口等中查看不同变量的值。 7. 针对问题进行调试:如果在调试过程中遇到问题,可以重新设置断点或添加更多的断点,以深入了解错误发生的原因。通过监视变量、查看堆栈和跟踪函数调用,可以进一步分析问题的根源。 8. 修正问题:根据调试的结果,修改代码中的错误或优化算法。可以多次重复以上步骤,直到对RTKLIB源码进行了完整的调试和修改。 总之,在Linux QT平台上调试RTKLIB源码需要借助QT调试工具和平台功能,结合源码分析和算法设计,以解决问题和优化算法为目标进行调试。 ### 回答2: 要在Linux Qt平台上调试RTKLIB源码,首先需要安装好Linux操作系统和Qt开发环境。然后按照以下步骤进行调试: 1. 下载RTKLIB源码:可以从RTKLIB官方网站上获得最新的源码压缩包,解压到本地目录。 2. 创建Qt项目:在Qt Creator中新建一个Qt项目,选择C++的控制台应用程序模板。 3. 将RTKLIB源码添加到项目中:将RTKLIB源码文件夹中需要用到的文件添加到Qt项目中,可以通过Qt Creator的“添加现有文件”功能或者手动将文件复制到项目目录下。 4. 配置项目参数:通过Qt Creator中的项目配置界面,设置项目的编译选项、链接库等参数。根据RTKLIB的编译说明,设置好相关的宏定义和编译选项,以适应Qt项目的编译环境。 5. 编写调试代码:在Qt项目中编写你需要调试的代码,根据RTKLIB的功能需要,调用相关的函数和类进行实现。 6. 编译和调试:通过Qt Creator中的编译和调试功能,编译项目并启动调试器。可以设置断点、跟踪变量的值,查看程序的执行流程,以及排查代码中的bug。 7. 调试过程中注意事项:在调试过程中,需要关注程序的输出信息和调试器的提示,根据需要进行断点设置和变量跟踪。如果出现错误或异常,可以通过调试器的功能找出问题的所在,然后进行修复和调试。 通过以上步骤,你就可以在Linux Qt平台上调试RTKLIB源码了。注意,调试RTKLIB源码需要一定的C++编程和调试经验,对RTKLIB的原理和功能也需要有一定的了解。 ### 回答3: 在Linux Qt平台上调试RTKLIB源码需要以下步骤: 1. 下载RTKLIB源码:首先需要从RTKLIB官方网站上下载源码的压缩包。解压缩该压缩包后,您将得到包含RTKLIB所有文件和文件夹的目录。 2. 安装Qt开发环境:在Linux系统上安装Qt开发环境,这将为您提供运行和调试RTKLIB源码的必要工具和库。您可以从Qt官方网站下载安装程序,根据指南进行安装。 3. 创建Qt项目:使用Qt Creator或其他Qt开发环境创建一个新的Qt项目,设置项目的名称和目录。 4. 导入RTKLIB源码:在新创建的Qt项目中,导入RTKLIB源码的所有文件和文件夹。可以直接将源码文件复制粘贴到项目目录中,或者通过IDE的导入功能导入源码文件。 5. 配置编译选项:配置项目的编译选项,确保正确设置了RTKLIB源码的路径和依赖库。这通常包括添加源码的路径到项目配置文件中,并链接RTKLIB所需的库文件。 6. 构建项目:通过Qt开发环境的构建功能编译和构建项目。这将生成可执行文件,用于运行和调试RTKLIB源码。 7. 设置断点和调试:使用Qt开发环境的调试功能,在源码中设置断点,以便在运行时暂停程序的执行。通过单步调试和观察变量的值,可以逐步跟踪程序的执行流程,查找和排除代码中的错误。 8. 运行和测试:在Qt开发环境中运行已编译的可执行文件,并进行测试和调试。通过观察输出结果和调试信息,您可以验证程序的准确性,检查是否正确实现了RTKLIB的功能。 以上是在Linux Qt平台上调试RTKLIB源码的一般步骤。根据需要,您可能还需要设置其他环境和工具来加速调试过程,例如使用模拟器或实际硬件设备进行测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值