调试

您可以使用调试器

  • 调试可执行二进制文件 - GNU 符号调试器 (GDB)、Microsoft 控制台调试器 (CDB) 和低级虚拟机 (LLVM) 项目调试器 LLDB。
  • 调试 QML 和 Java 代码以及Qt Quick 应用程序 - QML/JavaScript 调试器。
  • 调试 Python 源代码 - PDB。

设置调试器

Qt Creator 调试器会自动从系统中为每个工具包选择一个合适的调试器。您可以选择其他工具包。要为每个工具包指定调试器和编译器,请访问首选项> 。Kits

套件偏好

只有在由于调试器缺失(例如,必须自行在 Windows 上安装 CDB 调试器)或Qt Creator 不支持已安装版本而导致自动设置失败时,才需要设置调试器。例如,系统未安装 GDB 或安装的版本已过期,而你想使用本地安装的替代版本。

要更改自动检测工具包中的调试器,请访问 "首选项" >Kits >Clone 创建工具包副本,并更改克隆工具包中的参数。确保为项目启用克隆工具包。

如果没有自动检测到要使用的调试器,请访问首选项>Kits >Debuggers >Add 添加调试器。

套件偏好设置中的调试器选项卡

要使用 Windows 的调试工具,必须安装这些工具。如果需要从 Microsoft 模块获取本地找不到的符号信息,可以选择设置 Microsoft 符号服务器。

更多信息,请参阅支持的调试器CDB 路径

启动调试器

根据启动和运行调试程序的位置和方式,调试器以不同的运行模式运行。某些模式仅适用于特定操作系统或平台:

  • 内部启动,用于调试在Qt Creator 内开发的应用程序,如基于Qt Widgets 的应用程序。这是大多数项目的默认启动模式,包括所有使用桌面 Qt 版本的项目和纯 C++ 项目。
  • 外部启动(Start external)用于在本地或远程机器上启动和调试未正确设置Qt Creator 项目的进程。
  • 附加调试已启动并在Qt Creator 外部运行的进程,可在本地或远程机器上进行。
  • 核心调试 Unix 上崩溃的进程。
  • Post-mortem用于调试 Windows 上崩溃的进程。

一般来说,F5Start Debugging of Startup Project 按钮会根据上下文启动相应的运行模式。因此,对于使用 MinGW 工具链、以桌面 Windows 为目标的 C++ 应用程序,GDB 引擎会以启动内部模式启动。对于使用 C++ 插件的 QML 应用程序,则启动 QML/C++混合引擎,C++ 部分由 GDB 和 GDB 服务器远程调试处理。

在项目的运行设置中更改运行配置参数(如Run in Terminal ),或从Debug >Start Debugging 菜单中选择选项,以选择其他运行模式。

GDB 运行模式

GDB 调试器以不同模式运行,以应对各种支持的平台和环境:

  • 普通模式调试本地启动的进程,不需要控制台输入。
  • 终端模式调试需要控制台的本地启动进程。
  • 附加模式调试在Qt Creator 之外启动的本地进程。
  • 核心模式调试崩溃产生的核心文件。
  • 远程模式与 Linux 上运行的 GDB 服务器交互。

停止应用程序

您可以在运行中的应用程序终止前中断它,或者找出应用程序无法正常工作的原因。设置断点可停止应用程序检查和更改变量,设置新的断点或删除旧的断点,然后继续运行应用程序。

一旦程序在调试器的控制下开始运行,其行为和性能就会与往常一样。

要中断正在运行的 C++ 应用程序,请访问Debug >Interrupt 。调试器会在遇到断点时自动中断应用程序。

一旦应用程序停止,Qt Creator

你可以检查和更改变量,设置或移除断点,然后继续运行应用程序。

检查数据

当应用程序停止时,您可以在调试器中检查某些数据。数据的可用性取决于编译应用程序时编译器的设置以及应用程序停止的确切位置。

意外事件称为异常,调试器可以在异常发生时停止应用程序。调试到代码中发生异常的位置有助于调查问题并找到解决问题的方法。

例如,如果您有一个显示文本的变量,但应用程序却没有正确显示它,那么可能是您的数据不正确,或者是设置显示文本的代码做错了。你可以逐步查看代码,检查变量的变化,找出错误所在。

下面的视频展示了如何检查变量值:

远程调试

Qt Creator 使远程调试变得简单。一般来说,远程调试设置包括一个运行在远程计算机上的探针和一个运行在主机上的对应探针。探针要么集成到正在运行的进程中(例如 QML 调试),要么运行一个单独的进程(例如在嵌入式 Linux 上使用 GDB 服务器时)。主机端通常由 本身组成,通常借助 GDB 或 CDB 等外部进程。Qt Creator

虽然这种设置可能看起来令人生畏,但对于Qt Creator 的用户来说大多是不可见的。要在运行必要辅助进程的远程目标上开始调试,请在Projects >Build & Run 中激活相应的工具包,然后在Debug >Start Debugging 菜单中选择一个功能开始远程调试。

特殊情况下,如附加到目标机上正在运行的进程,可能仍需要手动设置。您可以调试运行在远程目标机上的应用程序,同时运行必要的辅助进程。

更多信息,请参阅使用 GDB 远程调试使用 CDB 远程调试

使用调试辅助进程

为了简洁明了地显示复杂结构(如QObjects 或关联容器),Qt Creator 使用了称为调试帮助程序的 Python 脚本。

Qt Creator Python 调试工具包为 200 多个最常用的 Qt 类、标准 C++ 容器和智能指针提供了调试帮助,满足了 C++ 应用程序开发人员的通常需求。

你还可以自定义和添加调试助手。

QML 和Qt Quick

在调试Qt Quick 应用程序时,您可以在调试 JavaScript 函数的同时检查应用程序的状态。你可以设置断点、查看调用堆栈跟踪以及检查本地和表达式。在应用程序运行时,你可以检查 QML 对象和用户界面,以及执行 JavaScript 表达式。

更多信息,请参阅调试Qt Quick 项目教程:Qt Quick 调试

另请参阅 教程:C++ 调试如何:调试调试器调试器工具包

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.