调试 Qt Quick 项目

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

设置 QML 调试

设置 Qt Quick 项目调试的过程取决于项目的类型Qt Quick UI 原型Qt Quick 应用程序,以及 Qt 版本。

调试 Qt Quick UI 项目

要调试 Qt Quick UI 项目 (.qmlproject),在运行设置 > 调试器设置 > QML 调试器中选择自动启用

{Debugger settings section in Run Settings}

调试 Qt Quick 应用程序

要调试 Qt Quick 应用程序

  1. 要创建支持 QML 调试的构建配置,请转到项目 > 构建
  2. QML 调试和性能分析中,选择启用

    {Build settings for a CMake project}

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

  3. 运行设置 > 调试器设置 > QML 调试器中,选择自动启用以启用正在运行的应用程序的 QML 调试。

    要同时调试应用程序的 C++ 和 QML 部分,同时选择自动启用C++ 调试器中。

  4. 选择构建 > 重新构建项目以清理和重新构建项目。
  5. 要在设备上调试应用程序,请确保设备上安装了 Qt 库,并在调试之前选择设备的相应套件。

注意:在安装 Qt Creator 和 Qt 时,会自动安装需要用于调试的 qmltooling 插件。如果您计划调试 QML 应用程序,请勿删除这些插件。

使用默认值

您可以在 首选项 > 构建与运行 > 默认构建属性 中全局开启或关闭 QML 调试。

"Default Build Properties tab in Build & Run Preferences"

QML 调试 字段的值决定在创建新的构建配置时发生什么。值 打开关闭 明确将这些值设置给新的构建配置,无论你创建什么类型的构建配置。

使用项目默认值 使得这些值取决于构建配置的类型:调试性能分析发布。当您使用 CMakeqmake 作为构建系统时,调试和性能分析构建配置将启用 QML 调试。然而,发布构建配置不包括 QML 调试,因为调试功能会使应用程序容易受到攻击。

保持默认设置 选项在 项目 > 构建 > QML 调试和性能分析 中是必需的,以保持现有的已配置好 CMake 构建目录。它还允许您将现有的构建导入到 Qt Creator,而不会强制改变,这样您就不必担心项目的全部重新构建,例如。即使您稍后更改 Qt Creator 外部的构建配置,它也会保持您的设置。

首选项 > 构建与运行 > 默认构建属性 的全局设置和构建配置之间的交互中存在一些已知问题。例如,对于 qmake 来说,全局设置仅影响启用工具包时自动创建的构建配置。同样,CMake 会忽略全局设置。

开始 QML 调试

要启动应用程序,选择 调试 > 开始调试 > 启动项目调试 或按 F5。一旦应用程序开始运行,它将按正常方式行为和执行。然后您可以执行以下任务:

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

调试已运行的应用程序

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

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

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

    -qmljsdebugger=port:<端口号>[,host:<IP 地址>][,block]

    其中 port(必需)指定调试端口号,ip address(可选)指定应用程序运行的主机的 IP 地址,而 block(可选)则防止应用程序在调试客户端连接到服务器之前运行。这允许从开始就进行调试。

    注意:只有在使用 block 模式启动应用程序时才能设置断点。

  3. 转到 调试 > 开始调试 > 附加到 QML 端口

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

调试JavaScript函数

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

检查项

当应用程序正在运行时,您可以使用Locals视图来探索QML项结构。

"QML item tree"

要在与调试器交互时保持应用程序可见,请选择调试 > 显示应用程序在最前面

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

  • 展开对象树中的项。
  • 在代码编辑器中选择项。
  • 转到调试 > 选择以激活选择模式,然后单击正在运行的应用程序中的项。

要临时更改属性值而不编辑源文件,请双击它们并输入新值。您可以在运行中的应用程序中查看结果。

检查用户界面

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

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

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

在运行应用程序中双击项以循环光标位置的项堆栈。

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

要将Qt QML Viewer中运行的应用程序置于前台,请选择调试 > 显示应用程序在最前面

执行JavaScript表达式

当应用程序由断点中断时,您可以使用QML调试控制台在当前上下文中执行JavaScript表达式。要打开它,请选择视图 > 输出 > QML调试控制台

"QML Debugger Console"

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

在运行时应用QML更改

当您在QML调试控制台LocalsExpression视图中更改属性值时,它们会在运行的应用程序中立即更新,但不会在源代码中更新。

另请参阅如何:调试调试调试器调试器套件

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