本页内容

调试

操作指南:调试

您可以使用调试器来:

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

配置调试器

Qt Creator 会根据系统中已安装的调试器,为每个开发套件自动选择合适的调试器。您也可以手动选择其他开发套件。若要为每个开发套件指定要使用的调试器和编译器,请前往“Preferences ” > “Kits ”。

套件偏好设置

仅当自动设置因缺少调试器(例如,在 Windows 上必须自行安装 CDB 调试器)或Qt Creator 不支持已安装的版本而失败时,才需要手动设置调试器。 例如,当您的系统未安装 GDB 或已安装的版本过时,而您希望改用本地安装的替代版本时。

要更改自动检测到的套件中的调试器,请转到Preferences >Kits >Clone 创建该套件的副本,然后在克隆的套件中更改参数。请确保为您的项目启用克隆的套件。

显示更多调试器

如果要使用的调试器未被自动检测到,请转至Preferences >Kits >Debuggers >Add 进行添加。

“Kits”首选项中的“调试器”选项卡

要刷新自动检测到的调试器列表,请选择“Re-detect ”。

要使用 Windows 调试工具,必须先安装它们。此外,如果您需要来自 Microsoft 模块的符号信息,而本地未找到该信息,则可选择配置 Microsoft 符号服务器。

有关详细信息,请参阅“支持的调试器CDB 路径”

启动调试器

调试器的运行模式因您启动和运行被调试进程的位置及方式而异。某些模式仅适用于特定的操作系统或平台:

  • 内部启动:用于调试在Qt Creator 中开发的应用程序,例如基于Qt Widgets 的应用程序。这是大多数项目的默认启动模式,包括所有使用桌面版Qt XML的项目以及纯C++项目。
  • “外部启动”用于在未进行适当的Qt Creator 项目配置的情况下,在本地或远程机器上启动并调试进程。
  • “Attachto” 用于调试已在Qt Creator 外部启动并正在运行的进程,无论是在本地还是远程机器上。
  • 使用“Core”在 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 使远程调试变得轻松。在常见情况下,如果远程机器已安装 GDBserver 等调试服务器,并且已通过选择“Run ”按钮(或按Ctrl+R)配置并成功实现了应用程序的远程执行,则只需选择“Debug ”按钮(或按F5)即可开始调试。

此时,“Qt Creator ”会自动按正确顺序启动并连接远程机器上的调试服务器和应用程序,以及开发主机上的实际调试器。

对于某些无法完全自动设置和执行远程调试的特殊情况,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++ 调试》《操作指南:调试》、《调试器》以及《套件管理》。

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.