调试

您可以使用调试器进行以下操作:

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

设置调试器

Qt Creator 会自动从您的系统中找到的调试器中选择适合每个 套件 的调试器。您可以选择另一个套件。要为每个套件指定要使用的调试器和编译器,请转到 首选项 > 套件

{Kits preferences}

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

要更改自动检测的套件的调试器,请转到 首选项 > 套件 > 克隆 以创建套件的副本,并在克隆的套件中更改参数。务必为您的项目启用克隆的套件。

如果您想使用的调试器未被自动检测,请转到 首选项 > 套件 > 调试器 > 添加 来添加它。

{Debuggers tab in Kits preferences}

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

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

启动调试器

调试器在不同的操作系统模式下运行,具体取决于练习和运行调试过程中的方法和位置,某些模式只在特定的操作系统或平台上可用。

  • 启动内部 用于调试在 Qt Creator 内开发的应用程序,例如基于 Qt 小部件的应用程序。这是大多数项目的默认启动模式,包括所有使用桌面 Qt 版本和平凡的 C++ 项目的项目。
  • 启动外部 用于启动和调试没有适当 Qt Creator 项目设置的进程,无论是本地还是远程计算机上的。
  • 附加 用于附加到已在 Qt Creator 外部启动和运行的进程,无论是本地还是远程计算机上的。
  • 核心 用于调试 Unix 上的崩溃进程。
  • 死后 用于调试 Windows 上的崩溃进程。

通常,F5启动调试 按钮根据上下文启动合适的操作系统模式。因此,对于使用 MinGW 工具链针对桌面 Windows 的 C++ 应用程序,GDB 引擎将在 启动内部 模式下启动。对于使用 C++ 插件的 QML 应用程序,将启动一个 混合 的 QML/C++ 引擎,其中的 C++ 部分将由 GDB 和 GDB 服务器远程调试处理。

在项目的运行设置中更改运行配置参数(例如 在终端运行),或在 调试 > 启动调试 菜单中选择其他操作模式。

GDB 运行模式

为了应对支持的多种平台和环境,GDB 调试器在不同的模式下运行

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

停止应用程序

您可以在应用程序终止之前中断它,或者找出为什么应用程序工作不正确。设置断点以停止应用程序以检查和更改变量、设置新断点或删除旧断点,然后继续运行应用程序。

一旦应用程序在调试器的控制下运行,它就表现得像往常一样。

要中断正在运行的 C++ 应用程序,转到 调试 > 中断。当应用程序遇到 断点 时,调试器会自动中断应用程序。

一旦应用程序停止,Qt Creator

您可以通过检查和更改变量、设置或删除断点,然后继续运行应用程序。

检查数据

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

意外事件被称为异常,当它们发生时调试器可以停止应用程序。转向代码中异常发生的位置可以帮助您调查问题并找到解决问题的方法。

如果您有一个显示文本的变量,但应用程序无法正确显示它,例如,您的数据可能不正确或设置显示文本的代码可能出错。您可以通过逐步遍历代码并检查变量的变化来找出错误发生的地方。

以下视频展示了如何检查变量值

远程调试

Qt Creator让远程调试变得简单。通常,远程调试设置包括在远程计算机上运行的一个探针和在主机上运行的对应程序。探针可以是集成在运行中的进程(例如,用于QML调试)或运行一个单独的进程(例如,在嵌入式Linux上使用GDB服务器时)。主机端典型的包括Qt Creator本身,通常需要外部进程的帮助,如GDB或CDB。

尽管这种设置看起来可能有些令人畏惧,但对Qt Creator的用户来说是基本看不见的。要开始在远程目标上以运行必要的辅助进程的方式调试,请在“项目”>“构建与运行”中激活相应的套件,然后在“调试”>“开始调试”菜单中选择一个函数以启动远程调试。

对于某些特殊用例,如连接到目标上运行中的进程,可能还需要手动设置。您也可以使用必要的辅助进程来调试远程目标上运行的应用程序。

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

使用调试辅助工具

为了以清晰简洁的方式显示复杂结构,例如QObjects或关联容器,Qt Creator使用称为调试辅助工具的Python脚本。

Qt Creator附带超过200个最受欢迎的Qt类、标准C++容器和智能指针的调试辅助工具,这些工具满足C++应用开发者通常的需求。

您可以自定义和添加调试辅助工具。

QML和Qt Quick

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

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

另请参阅 教程:C++调试如何调试调试器调试器套件

©2024 Quantum公司有限公司。此处包含的文档贡献的版权属于各自的所有者。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt和相应的标识是芬兰及/或其他国家/地区的Quantum公司商标。所有其他商标均为各自所有者的财产。