Qt调试功能使用方法

QT编程环境

QT在Windows操作系统下的三种编程环境搭建。

方案编程环境编译器调试器
1Qt CreatorMinGW GCCGDB
2Qt CreatorMicrosoft Visual C++ CompilerDebugging Tools for Widows
3Microsoft Visual Studio VS自带VS自带

方案提及的QT安装程序及压缩包均能在官网Index of /official_releases下载到。

 Qt编译器MinGW-32下载地址:Index of /development_releases/prebuilt/mingw_32

Index of /development_releases/prebuilt/mingw_64 Qt编译器MinGW-64下载地址:Index of /development_releases/prebuilt/mingw_64

QT调试功能

一、基础调试操作

  1. 启动调试

    • 使用 F5 或点击调试按钮(绿色虫子图标)进入调试模式。调试前需确保项目为 Debug 版本,否则无法加载调试信息‌。

    • 支持的调试器:Windows 平台推荐 CDB(需安装 Debugging Tools for Windows),其他平台可选 GDB 或 LLDB‌。
      GDB调试器:安装MinGW后,对应的bin目录下有gdb.exe文件。通过kit工具添加gdb

      CDB调试器:已经安装过sdk(比如:win10系统),通过控制面板,找到window软件开发包套件(如下),右键,再选择“更改”,选择Debuging Tools for Windows。


      安装完毕之后,重启Qt Creator就可以调试,如果不行,就通过kit工具添加CDB

  2. 断点管理

    • 在代码行号左侧单击设置断点,程序运行到断点时会暂停执行,可查看变量、调用栈等信息‌。

    • 支持条件断点和临时禁用断点‌。

  3. 单步执行与变量监控

    • 使用 Step Into(步入)、Step Over(步过)、Step Out(步出)逐行跟踪代码逻辑‌。

    • 在调试视图中查看局部/全局变量,支持修改变量值进行动态测试‌。


二、高级调试技巧

  1. 调试动态库(DLL)

    • Attach to Running Application‌:附加到已运行进程调试动态库‌。

    • Attach to Unstarted Application‌:配置未启动的应用程序进行调试‌。

    • Start and Debug External Application‌:直接启动外部应用并调试其加载的动态库‌。

  2. 处理程序崩溃

    • 程序崩溃时,调试器会自动定位到崩溃位置,通过调用栈(Call Stack)回溯问题源头,检查变量值或指针是否异常(如野指针或越界访问)‌。

    • 常见错误分析:

      • Segmentation fault:内存访问错误,检查指针或容器越界‌。

      • 0xc0000005:空指针调用,需验证指针有效性‌。

  3. 调试子进程

    • 在调试器设置中添加 set follow-fork-mode child(GDB)命令,自动附加到由 QProcess 启动的子进程‌。


三、调试配置

  1. 调试 Qt 源码

    • MinGW/MSVC 配置‌:安装 Qt 源码并配置调试符号路径,支持单步进入 Qt 内部函数‌。

    • 建议使用 Qt Creator 10.0.0+ 版本,内置代码分析插件,对 CMake 项目支持更完善‌。

  2. Release 模式调试

    在 .pro 文件中添加编译选项,如下,重新编译生效‌,生成调试符号后需清理旧构建文件(如 .pdb)。
  3. QMAKE_CXXFLAGS_RELEASE += -g QMAKE_LFLAGS_RELEASE = -g
  4. 远程调试(如嵌入式设备)

    • 配置交叉编译工具链,构建 ARM 版本程序后传输到目标设备,通过 Qt Creator 远程附加调试‌。

四、注意事项

  • 版本兼容性‌:确保 Qt Creator 版本与调试器及工具链匹配,避免功能缺失‌。

  • 调试符号‌:调试第三方库或系统组件时需安装对应的调试符号包‌。

  • 资源清理‌:修改调试配置后需执行 清理 → qmake → 重新构建,确保生效‌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vulnhub靶场之【digitalworld.local系列】的mercy靶机

前言 靶机:digitalworld.local-mercy,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.6 kali采用VMware虚拟机,靶机选择使用VMware打开文件,都选择桥接网络 这里官方给的有两种方式,一…

Fiddler抓取App接口-Andriod/IOS配置方法

Andriod配置方法: 1)确保手机和Fiddler所在主机在同一个局域网中 2)获取Fiddler所在主机的ip地址,通过cmd命令进入命令编辑器,输入ipconfig -all,找到IPv4地址,记下该地址 3)对手机…

步进电机软件细分算法解析与实践指南

1. 步进电机细分技术概述 步进电机是一种将电脉冲信号转换为角位移的执行机构,其基本运动单位为步距角。传统步进电机的步距角通常为 1.8(对应 200 步 / 转),但在高精度定位场景下,这种分辨率已无法满足需求。细分技术…

C语言_数据结构总结2:动态分配方式的顺序表

0——静态分配内存的顺序表和动态分配内存的顺序表的相同之处和不同之处 相同之处 基本操作逻辑相同:无论是静态分配还是动态分配的顺序表,其核心的操作逻辑是一致的。例如插入操作都需要将插入位置之后的元素依次后移,删除操作都需要将删除…

Vue 与 Element UI 深度探秘:从 Array.isArray 到动态绑定的技术之旅!✨

以下是一篇深入的技术博客&#xff0c;基于我们对 compare-form.vue 和 <w-form-select.vue> 的所有讨论&#xff0c;涵盖 Array.isArray、option-label/option-value、:list 动态绑定、: 语法以及 Vue 2/3 兼容性等问题。博客风格轻松有趣&#xff0c;加入 SVG 图解和实…

计算机视觉|3D卷积网络VoxelNet:点云检测的革新力量

一、引言 在科技快速发展的背景下&#xff0c;3D 目标检测技术在自动驾驶和机器人领域中具有重要作用。 在自动驾驶领域&#xff0c;车辆需实时、准确感知周围环境中的目标物体&#xff0c;如行人、车辆、交通标志和障碍物等。只有精确检测这些目标的位置、姿态和类别&#x…

前端打包优化相关 Webpack

前端打包优化相关 Webpack 打包时间的优化&#xff08;基于 Vue CLI 4 Webpack 5&#xff09; 1. Webpack 配置减少打包时间 1.1 对 JS 配置&#xff1a;排除 node_modules 和 src 中的打包内容 在开发环境下&#xff0c;修改 Webpack 的 JS 规则&#xff0c;排除 /node_m…

leetcode69.x 的平方根

题目&#xff1a; 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。…

Docker 部署 MongoDB 并持久化数据

Docker 部署 MongoDB 并持久化数据 在现代开发中&#xff0c;MongoDB 作为 NoSQL 数据库广泛应用&#xff0c;而 Docker 则提供了高效的容器化方案。本教程将介绍如何使用 Docker 快速部署 MongoDB&#xff0c;并实现数据持久化&#xff0c;确保数据不会因容器重启或删除而丢失…

信奥赛CSP-J复赛集训(模拟算法专题)(3):P1089 [NOIP 2004 提高组] 津津的储蓄计划

信奥赛CSP-J复赛集训&#xff08;模拟算法专题&#xff09;&#xff08;3&#xff09;&#xff1a;P1089 [NOIP 2004 提高组] 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津 300 300 300 元钱&#xff0c;津津会预算这个月的花销&#xff0…

日新F1、瑞研F600P 干线光纤熔接(熔接损耗最大0.03DB)

Ⅰ. 设备特性对比与实测验证 1. 日新F1&#xff08;两马达&#xff09;极限参数 切割角度&#xff1a;必须≤0.3&#xff08;双边累计误差&#xff1c;0.6&#xff09; ▶ 实测案例&#xff1a;切割0.35时&#xff0c;损耗波动达0.05-0.08dB&#xff08;超干线标准&#xff09…

【量化科普】Sharpe Ratio,夏普比率

【量化科普】Sharpe Ratio&#xff0c;夏普比率 &#x1f680;量化软件开通 &#x1f680;量化实战教程 在量化投资领域&#xff0c;夏普比率&#xff08;Sharpe Ratio&#xff09;是一个非常重要的风险调整后收益指标。它由诺贝尔经济学奖得主威廉F夏普&#xff08;William…

数据结构--【顺序表与链表】笔记

顺序表 template <class T> class arrList :public List<T> //表示 arrList 类以公有继承的方式继承自 List<T> 类 //公有继承意味着 List<T> 类的公共成员在 arrList 类中仍然是公共成员&#xff0c;受保护成员在 arrList 类中仍然是受保护成员。 { …

idea中隐藏目录

可能的解决步骤&#xff1a; 排除目录的方法是否在2021版本中有变化&#xff1f;应该没有&#xff0c;还是通过右键标记为排除。 用户可能想完全隐藏目录&#xff0c;比如在项目视图中不显示&#xff0c;这可能需要调整项目视图的设置&#xff0c;比如取消勾选“显示排除的文件…

AWS 如何导入内部SSL 证书

SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…

2025最新群智能优化算法:基于RRT的优化器(RRT-based Optimizer,RRTO)求解23个经典函数测试集,MATLAB

一、基于RRT的优化器 基于RRT的优化器&#xff08;RRT-based Optimizer&#xff0c;RRTO&#xff09;是2025年提出的一种新型元启发式算法。其受常用于机器人路径规划的快速探索随机树&#xff08;RRT&#xff09;算法的搜索机制启发&#xff0c;首次将RRT算法的概念与元启发式…

doris: Oracle

Apache Doris JDBC Catalog 支持通过标准 JDBC 接口连接 Oracle 数据库。本文档介绍如何配置 Oracle 数据库连接。 使用须知​ 要连接到 Oracle 数据库&#xff0c;您需要 Oracle 19c, 18c, 12c, 11g 或 10g。 Oracle 数据库的 JDBC 驱动程序&#xff0c;您可以从 Maven 仓库…

im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略

随着即时通讯技术的不断发展&#xff0c;IM即时聊天客服系统已经成为企业与客户沟通、解决问题、提升用户体验的重要工具。在选择IM即时聊天客服系统时&#xff0c;企业面临一个重要决策&#xff1a;选择SaaS&#xff08;软件即服务&#xff09;解决方案&#xff0c;还是进行私…

mysql中in和exists的区别?

大家好&#xff0c;我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助&#xff1b; mysql中in和exists的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中&#xff0c;IN 和 EXISTS 都用于进行子查询&#xff0c;但它…

element-plus中table组件的使用

1、table组件的基本使用 注意&#xff1a; ①对象集合&#xff0c;要从后端查询。 ②prop是集合中的对象的属性名&#xff1b;label是表格表头的名称。 2、将性别一列的71转为男&#xff0c;72转为女 问题描述&#xff1a; 解决步骤&#xff1a; ①将el-table-column变成双标签…