调试Qt Quick 项目

有关如何调试Qt Quick 项目的示例,请参阅教程:Qt Quick 调试

设置 QML 调试

Qt Quick 项目设置调试的过程取决于项目的类型Qt Quick UI PrototypeQt Quick Application以及 Qt 版本。

调试Qt Quick UI 项目

要调试Qt Quick UI 项目(.qmlproject),请在Run Settings >Debugger Settings >QML debugger 中选择AutomaticEnabled

运行设置中的调试器设置部分

调试Qt Quick 应用程序

调试Qt Quick 应用程序:

  1. 要创建支持 QML 调试的构建配置,请访问Projects >Build
  2. QML debugging and profiling 中,选择Enable

    CMake 项目的构建设置

    注意: 调试需要在 TCP 端口打开套接字,这会带来安全风险。互联网上的任何人都可以连接到你正在调试的应用程序,并执行任何 JavaScript 函数。因此,必须确保端口受到防火墙的适当保护。

  3. Run Settings >Debugger settings >QML debugger 中,选择AutomaticEnabled ,为运行中的应用程序启用 QML 调试。

    要同时调试应用程序的 C++ 和 QML 部分,也可在C++ debugger 中选择AutomaticEnabled

  4. 选择Build >Rebuild Project 可清理并重建项目。
  5. 要调试设备上的应用程序,请检查设备上是否安装了 Qt 库,并在开始调试前为设备选择相应的工具包

注意: 调试所需的qmltooling 插件会在Qt Creator 和 Qt 安装过程中自动安装。如果计划调试 QML 应用程序,请不要删除它们。

使用默认值

您可以在Preferences>Build & Run >Default Build Properties 中全局启用或禁用 QML 调试。

构建与运行 "首选项中的 "默认构建属性 "选项卡

QML debugging 字段的值决定了创建新构建配置时会发生什么。EnableDisable 的值明确地将新构建配置的 QML 调试设置为该值,不管你创建的是什么类型的构建配置。

Use Project Default 使值取决于构建配置的类型:、 或 。当你使用Debug Profile ReleaseCMakeqmake作为联编系统时,调试和配置文件联编配置会启用 QML 调试。然而,发行版构建配置不包括 QML 调试,因为调试功能会使应用程序易受攻击。

Projects >Build >QML debugging and profiling 中的Leave at Default 选项需要保持现有的、已配置好的 CMake 编译目录不变。此外,它还能让你在不强制修改的情况下将现有的构建导入Qt Creator ,这样你就不必担心项目的完全重建等问题。即使以后您在Qt Creator 之外更改了构建的配置,它也会保持您想要的样子。

偏好设置 >Build & Run >Default Build Properties 中的全局设置与联编配置之间的交互存在一些已知问题。例如,对于 qmake,全局设置只影响启用套件时自动创建的联编配置。此外,CMake 会忽略全局设置。

启动 QML 调试

要启动应用程序,请选择Debug >Start Debugging >Start Debugging of Startup Project 或选择F5。一旦应用程序开始运行,它的行为和执行与往常一样。然后,您可以执行以下任务:

  • 调试 JavaScript 函数
  • 执行 JavaScript 表达式以获取有关应用程序状态的信息
  • 检查 QML 属性和 JavaScript 变量,并在运行时临时更改它们

调试已运行的应用程序:

  1. 使用适当的配置参数构建应用程序(如果使用Qt Creator 构建应用程序,它会自动使用正确的配置):
    • 使用 CMake 时,target_compile_definitions命令定义在 CMakeLists.txt 文件中:target_compile_definitions(myapp PRIVATE QT_QML_DEBUG)

      其中,myapp是要调试的应用程序。

    • 使用 qmake 时,.pro 文件中的CONFIG属性定义了以下值:CONFIG += qml_debug
  2. 使用以下参数启动应用程序:

    -qmljsdebugger=port:<port>[,host:<ip address>][,block]

    其中port (必选)指定调试端口,ip address (可选)指定运行应用程序的主机的 IP 地址,block (可选)阻止应用程序运行,直到调试客户端连接到服务器。这样就可以从一开始就进行调试。

    注意: 只有当应用程序以块模式启动时,才能设置断点。

  3. 转至Debug >Start Debugging >Attach to QML Port

    选择为运行要调试的应用程序的设备配置的工具包。要使用的端口号会在应用程序启动时显示在标准输出中。

调试 JavaScript 函数

您可以使用Qt Creator Debug 模式在调试时检查应用程序的状态。您可以通过以下方式与调试器交互:

检查项目

在应用程序运行时,您可以使用Locals 视图查看 QML 项目结构。

本地视图中的 QML 项目树

要在与调试器交互时保持应用程序可见,请选择Debug >Show Application on Top

您可以通过以下方式在Locals 视图中查看 QML 项目:

  • 在对象树中展开项目。
  • 在代码编辑器中选择项目。
  • 转到Debug >Select 激活选择模式,然后在运行的应用程序中选择一个项目。

要在不编辑源代码的情况下临时更改属性值,请双击属性并输入新值。您可以在运行中的应用程序中查看结果。

检查用户界面

调试复杂的应用程序时,可以跳转到代码中定义项目的位置。

在选择模式下,您可以在运行中的应用程序中选择项目,跳转到代码中的定义位置。所选项的属性将显示在Locals 视图中。

您还可以查看运行应用程序中的项目层次结构:

双击正在运行的应用程序中的项目,可循环浏览光标位置的项目堆栈。

要切换出选择模式,请切换Select 菜单项。

要将Qt QML Viewer 中运行的应用程序移到前面,请选择Debug >Show Application on Top

执行 JavaScript 表达式

当应用程序被断点中断时,可以使用QML Debugger Console 在当前上下文中执行 JavaScript 表达式。要打开它,请选择View >Output >QML Debugger Console

QML 调试器控制台

您可以在不编辑源代码的情况下临时更改属性值,并在运行的应用程序中查看结果。您可以在代码中永久更改属性值。

在运行时应用 QML 更改

QML Debugger ConsoleLocalsExpression 视图中更改属性值时,运行中的应用程序会立即更新,但源代码不会。

另请参阅 "如何:调试"、"调试"、"调试器"、"调试器"和 "工具包"。

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.