Mastering Qt 番外 —— 添加源码调试

devtools/2024/9/20 7:12:34/ 标签: qt, 开发语言, 调试

        笔者最近正在尝试深入的学习Qt框架,经常需要明确我经常使用的类底下发生了什么,因此笔者决定仔细研究一下如何进行源码级别的调试

        此篇文章将会介绍如何使用Qt Creator这个IDE进行调试。最终效果如下

EasyWay

        笔者采用的是这个最简单明了的方式,打开Qt安装目录下的MaintenanceTool.exe,在登录结束后选择“添加或移除组件选项”

        在各位看官自己安装的版本下,可以看到Qt Debug Information Files,勾选安装即可

Tough Way

        还有一种情况,就是看官选择的版本的MaintenanceTool.exe不提供Qt Debug Information Files,在这个情况下,看官就需要手动的下载调试所需要的pdb文件了

        举个例子,如果看官使用的是Qt6.7.2,其目标编译器是Mingw64,目标主机操作系统是Windows64位,那么,在如下的链接下载所需要的库的pdb文件即可。放到自己的一个文件夹下(哪里都行,但是需要记住放在哪里)

Index of /online/qtsdkrepository/windows_x86/desktop/qt6_672/qt.qt6.672.debug_info.win64_mingw

Qt Creator配置

        再下一步就是Qt Creator的配置了,如果您是Old Qt Creator User, 在工具 - 选项里找到调试器,如果你是新Qt Creator用户(比如说我),事情很简单

        

        点击Preferences就行。

        下一步就是找到调试器,告诉我们的调试器到哪里找到我们的Qt FrameWork的源码符号。对于采用了EasyWay的同志们,事情还是很Easy,只需要自己在调试器中添加自己下载的Qt源码位置就好了(btw: 自己使用 + 调试的源码保证版本一致,为什么呢,不同版本代码不一样,调试符号自然不同,调试时错配 pdb 文件,默认的行为是调试器装死直接ignore F11)

        ToughWay的同志们在做完上面这个事情的基础上,再选择CDB Path路径

        添加的东西是下载的pdb根文件夹下的bin目录(确保暴露pdb文件即可)(btw,不太负责任,因为笔者尚未求证此方法!)

        现在我们可以对Qt进行源码级别的调试了(笑

Reference

qt5.12调试信息(pdb文件)安装 – simba (simbot.net)

Qt查看源码总结帖 | Olimi (olimiya.github.io)


http://www.ppmy.cn/devtools/114450.html

相关文章

Flask 实现用户登录功能的完整示例:前端与后端整合(附Demo)

目录 前言Demo 前言 对于python用户的登录,以下只是提供一个Demo用于学习 更多的python知识点可从我的专栏中进行学习 python专栏详细分析Flask中的蓝图Blueprint(附Demo)详细分析Flask部署云服务器(图文介绍)构建F…

QT QObject源码学习(二)

一、全局函数 1、qt_qFindChildren_helper函数 在给定的父对象下,查找所有匹配指定条件的子对象,并将它们添加到一个列表中。 (1)声明 /*** brief 在给定的父对象下,查找所有匹配指定条件的子对象,并将它…

python的基础语法

Python 的基础语法非常简洁明了,适合初学者快速上手。下面我将为你总结几个最重要的基础语法点,帮你快速掌握 Python 的核心概念。让我们从基础开始逐步深入,像刷副本一样一关一关地攻克它们! 1. Hello, World! 每一种编程语言的…

Spring Boot-静态资源管理问题

在Spring Boot中,静态资源管理是构建现代Web应用程序时必不可少的一部分。无论是处理静态页面、图片、CSS、JavaScript文件,还是一些自定义文件,正确管理这些资源能够提升用户体验和优化应用的性能。 1. Spring Boot中的静态资源管理概述 S…

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key,也就是defaultZone不支持snake-c…

力扣150题——多维动态规划

交错字符串 题目 97. 交错字符串 - 力扣(LeetCode) 思路 用dp[i][j]代表s1的前i个字母和s2的前s2个字母能否交错组成s3的前ij-1的子串 状态转移方程即为 如果 s1[i-1] s3[i j - 1],并且 dp[i-1][j] 为 true,则 dp[i][j] 也…

C语言中的assert断言

Assert断言 断言是程序中处理异常的一种高级形式。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 用法: #…

ARPGDemo第一阶段总结

1、阶段展示 ARPGDemo阶段展示1 2、使用技术 1.资源使用 开发阶段使用AssetDatabase.LoadAssetAtPath在Editor加载使用,当需要导包将切换AssetBundles来Build并使用加载。 2.加载详情 项目中开始界面UI以及场景的加载均使用异步加载。其中场景切换异步加入了异步…

Java 连接 MySQL 数据库查询示例

目录 一、代码展示 二、代码解析 (一)连接数据库参数设置 (二)查询方法search 一、代码展示 package db;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statemen…

计算生物学:概念、历史、现状与展望?

一、概念 计算生物学是一个融合了生物学、数学、统计学和计算机科学的交叉学科领域,它运用计算方法和工具来处理、分析和解释生物数据,以解决生物学问题、揭示生物规律和构建生物模型。 二、历史 计算生物学的发展可以追溯到上世纪中叶。早期主要是…

AWS 消息通知系统 SNS

AWS 消息通知系统 SNS 引言什么是 AWS SNSSNS 的工作原理SNS 的主要应用场景示例:创建 SNS 主题和订阅使用 AWS 管理控制台使用 AWS CLI使用 AWS SDK (Python Boto3) 示例 CloudWatch 如何通过 SNS 发送告警通知 引言 《AWS 监控和管理服务 CloudWatch》有介绍 Clo…

JavaWeb---纯小白笔记01:JavaWeb概述和Tomcat安装

本次将对WEB开发的相关的概念和Tomcat等进行介绍。 Web开发简介: C/S和B/S是两种常用的网络架构模式 区别: C/S:client/server --客户端与服务器之间直接进行通信,对用户,本地电脑要求高 B/S:browser/server--通过…

Day29_0.1基础学习MATLAB学习小技巧总结(29)——参数估计函数

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目: 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

机器学习-监督学习:朴素贝叶斯分类器

机器学习-监督学习:朴素贝叶斯分类器 一、引言 在机器学习的广阔领域中,监督学习占据着核心地位,它通过已知的数据集(包括输入和输出)来训练模型,以期对新的、未见过的数据做出准确的预测。朴素贝叶斯分类…

爬虫框架之Scrapy介绍——高效方便

# 近年来大数据分析、数据可视化和python等课程逐渐在大学各个学科中铺展开来,这样一来爬虫在平时小作业和期中、期末报告中出现的频率也逐渐变高。那么单一的使用requests库,自己从头到尾的的设计,考虑数据提取、线程管理和数据存储等方方面…

阈值分割之自适应阈值原理及adaptiveThreshold参数意义

opencv自适应阈值原理 1、先将原图像进行平滑(均值平滑,中值平滑,高斯平滑…),得到一个平滑后的图像记为smoothImg; 2、得到自适应矩阵 Thresh (1-ratio)*smoothImg ; ratio一般为0.15 3、利用局部阈值进行分割 , 即利用Thresh和原图进行比较分割 优点…

【mysql面试题】mysql复习之常见面试题(二)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

使用Python生成多种不同类型的Excel图表

目录 一、使用工具 二、生成Excel图表的基本步骤 三、使用Python创建Excel图表 柱形图饼图折线图条形图散点图面积图组合图瀑布图树形图箱线图旭日图漏斗图直方图不使用工作表数据生成图表 四、总结 Excel图表是数据可视化的重要工具,它通过直观的方式将数字信…

基于springboot的智慧社区微信小程序

文未可获取一份本项目的java源码和数据库参考。 本课题研究目标 本文主要对小区生活服务平台的功能和非功能需求进行了分析,系统除了提供物业保修、小区资讯、投诉留言、常用电话等基础功能外,为了满足用户的多样化需求,还提供邻里圈子和有…

linux之jdk安装

1:官网下载linux的安装包 下载路径: https://www.oracle.com/java/technologies/downloads/#java8 也可私信明哥分析给你。 2:上传安装包 将其解压 使用命令 tar -zxvf jdk-8u91-linux-i586.tar.gz移动解压的包到指定的位置 我专门创建jdk的目录存在 如下所示 使用…