QQmlDebuggingEnabler Struct
QQmlDebuggingEnabler 类提供了用于启用调试或性能分析的方法。更多内容...
| 头文件: | #include <QQmlDebuggingEnabler> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
公共类型
| enum | StartMode { DoNotWaitForClient, WaitForClient } |
静态公共成员
| bool | connectToLocalDebugger(const QString &socketFileName, QQmlDebuggingEnabler::StartMode mode = DoNotWaitForClient) |
| QStringList | debuggerServices() |
| void | enableDebugging(bool printWarning) |
| QStringList | inspectorServices() |
| QStringList | nativeDebuggerServices() |
| QStringList | profilerServices() |
| void | setServices(const QStringList &services) |
| bool | startDebugConnector(const QString &pluginName, const QVariantHash &configuration = QVariantHash()) |
| bool | startTcpDebugServer(int port, QQmlDebuggingEnabler::StartMode mode = DoNotWaitForClient, const QString &hostName = QString()) |
详细说明
通常,在构建应用程序时,通过 CMake 传递 `QT_ENABLE_QML_DEBUG ` 或通过 qmake 传递 `CONFIG+=qml_debug ` 来启用 QML 调试和性能分析。在运行时,应用程序通常会解析任何 `-qmljsdebugger ` 命令行参数,从而实际启动调试或性能分析。
您也可以通过使用本类中的方法来手动处理这些任务。
成员类型文档
enum QQmlDebuggingEnabler::StartMode
定义调试连接器的启动行为。当调试客户端正在连接时,您可以中断 QML 引擎的启动过程,以便在启动代码中设置断点或进行性能分析。
| 常量 | 值 | 描述 |
|---|---|---|
QQmlDebuggingEnabler::DoNotWaitForClient | 0 | 在调试服务连接期间,照常运行所有 QML 引擎。 |
QQmlDebuggingEnabler::WaitForClient | 1 | 如果 QML 引擎在调试服务连接期间启动,则将其中断,直到调试服务连接完成为止。 |
成员函数文档
[static] bool QQmlDebuggingEnabler::connectToLocalDebugger(const QString &socketFileName, QQmlDebuggingEnabler::StartMode mode = DoNotWaitForClient)
启用对调用此函数后创建的 QML 引擎的调试功能。如果 `mode ` 的值为 `WaitForClient`,则调试连接器将连接到在指定 `socketFileName ` 上的本地套接字处等待的调试器,并在建立连接前阻塞 QML 引擎。如果未指定 `mode `,则不会进行阻塞。每次只能启动一个调试连接器。 如果提供了 -qmljsdebugger= 命令行参数,则可能已经启动了一个调试连接器。如果成功启动了新的调试连接器,此方法返回true ;否则返回false 。
[static] QStringList QQmlDebuggingEnabler::debuggerServices()
获取默认提供的调试器服务的插件键。调试器服务允许调试客户端使用 Qml/JavaScript 调试器,以便设置断点、暂停执行、评估表达式以及执行其他类似的调试任务。返回默认调试器服务的插件键列表。
[static] void QQmlDebuggingEnabler::enableDebugging(bool printWarning)
启用调试或性能分析。如果 `printWarning ` 的值为 `true`,则将以下警告输出到 `stderr`:
QML debugging is enabled. Only use this in a safe environment.如果在构建时传入了QT_ENABLE_QML_DEBUG 或CONFIG+=qml_debug ,则该方法会在启动时自动被调用。
在启动任何类型的调试连接器之前,必须以某种方式调用此方法。否则,连接器将拒绝启动。
另请参阅 startTcpDebugServer()、connectToLocalDebugger() 和startDebugConnector()。
[static] QStringList QQmlDebuggingEnabler::inspectorServices()
获取默认提供的检查器服务的插件键。检查器服务允许调试客户端使用可视化检查器工具来查看Qt Quick 。返回默认检查器服务的插件键列表。
[static] QStringList QQmlDebuggingEnabler::nativeDebuggerServices()
获取专为与原生调试器配合使用而设计的调试服务的插件键。原生调试器将通过直接读写应用程序的内存与这些服务进行通信。返回专为与原生调试器配合使用而设计的调试服务的插件键列表。
[static] QStringList QQmlDebuggingEnabler::profilerServices()
获取默认提供的分析器服务名称。这些分析器服务允许调试客户端使用分析器,并跟踪各种 QML 和 JavaScript 结构以及QtQuick 场景图所耗费的时间。返回默认分析器服务的插件键列表。
[static] void QQmlDebuggingEnabler::setServices(const QStringList &services)
限制调试连接器提供的服务。 该连接器将扫描默认插件路径下“qmltooling”子目录中的插件。如果在启用调试连接器之前未调用此函数,通过该方式发现的所有服务都将对任何客户端开放。如果调用了此函数,则只有services 中指定的插件键对应的服务才会提供。
在进行性能分析时,请使用此方法禁用调试器和检查器服务,以获得更好的性能和更真实的性能分析结果。调试器服务会将其连接的任何 JavaScript 引擎置于解释模式,从而禁用 JIT 编译器。
另请参阅 debuggerServices()、profilerServices() 和inspectorServices()。
[static] bool QQmlDebuggingEnabler::startDebugConnector(const QString &pluginName, const QVariantHash &configuration = QVariantHash())
启用对调用此函数后创建的 QML 引擎的调试功能。系统将使用指定的 `configuration` 加载并启动由 `pluginName ` 指定的调试连接器插件。支持的配置项及其含义取决于正在加载的插件。每次只能启动一个调试连接器。 如果提供了 -qmljsdebugger= 命令行参数,则可能已经启动了一个调试连接器。如果成功启动了新的调试连接器,此方法返回true ;否则返回false 。
[static] bool QQmlDebuggingEnabler::startTcpDebugServer(int port, QQmlDebuggingEnabler::StartMode mode = DoNotWaitForClient, const QString &hostName = QString())
启用对调用此函数后创建的 QML 引擎的调试功能。如果mode 的值为WaitForClient ,则调试连接器将在port 的hostName 端口上监听,并阻塞 QML 引擎直至接收到连接请求;如果mode 未指定,则不会阻塞;如果hostName 未指定,则将在所有可用接口上监听。每次只能启动一个调试连接器。 如果提供了 -qmljsdebugger= 命令行参数,则可能已经启动了一个调试连接器。如果成功启动了新的调试连接器,此方法将返回true ;否则将返回false 。
© 2026 The Qt Company Ltd. 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.