当前位置: 首页 > news >正文

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.dtcms.com/a/56416.html

相关文章:

  • 【使用hexo模板创建个人博客网站】
  • 趣味学习法,助力消防设施操作员考试
  • Spring(五)容器-依赖注入的三种方式
  • C语言——位操作运算
  • electron + vue3 + vite 主进程到渲染进程的单向通信
  • Gravitino源码分析-SparkConnector 实现原理
  • HTML5的新特性有哪些?
  • 网络安全配置截图 网络安全i
  • 【AI赋能】AI工具图文创造指南:从主题到一键发布的完整指南
  • 动态ip和静态ip适用于哪个场景?有何区别
  • CODEGEN:一种基于多轮对话的大型语言模型编程合成方法
  • 永洪科技深度分析实战,零售企业的销量预测
  • 隐私保护在 Facebook 用户身份验证中的应用
  • 从连接到交互:SDN 架构下 OpenFlow 协议的流程与报文剖析
  • LLM论文笔记 19: On Limitations of the Transformer Architecture
  • 【江协科技STM32】TIM编码器接口测速(学习笔记)
  • 【虚拟化】Docker Desktop 架构简介
  • SyntaxError: Illegal return statement
  • 【git】ssh配置提交 gitcode-ssh提交
  • 消防行业如何借助 TDengine 打造高效的数据监控与分析系统
  • DeepSeek-进阶版部署(Linux+GPU)
  • 随机过程的核心概念与Matlab实现
  • 乐鑫打造全球首款 PSA Certified Level 2 RISC-V 芯片
  • Python基于Django的医用耗材网上申领系统【附源码、文档说明】
  • Java中的设计模式违反了哪些设计原则
  • React基础之渲染操作
  • “双碳”背景下,企业应该如何提升能源效率?
  • Vue3路由组件和一般组件 切换路由时组件挂载和卸载 路由的工作模式
  • Nginx如何实现 TCP和UDP代理?
  • 选择排序算法的分析