QML 调试和 qmljsdebugger 分析不适用于 Yocto (poky-pyro) 的 RPI

QML debugging & qmljsdebugger profiling is not working on RPI with Yocto (poky-pyro)

我想使用 QML Profiler 收集数据,qmljsdebugger 进程托管在目标设备上。我 运行 我的应用程序具有以下参数:

<app executable> -qmljsdebugger = port:<any available>

我尝试 运行 分析器从 qtcreator(external) 内部收集数据 我现在在目标设备上面临的问题有两个:

  1. 应用程序不会 运行 处于调试模式,并且
  2. qmljsdebugger 模块没有启动。

我相信如果应用程序 运行 处于调试模式,当应用程序在命令行 运行 时应该显示以下行:

QML debugging is enabled. Only use this in a safe environment. (does not appear!)

并且如果 qmljsdebugger 模块启动,应用 运行s;

时应显示以下行

QML Debugger: Waiting for connection on port . (does not appear!)

现在,要启用调试模式,我了解到我们需要将以下内容放入项目的.pro 文件中;

CONFIG+=qml_debug

要启动 qmljsdebugger,我们需要将参数与应用程序可执行文件一起提供,如上所述。
我还了解到 qmljsdebugger 依赖于两个文件:

  1. libqmldbg_tcp.so
  2. libqmldbg_inspector.so

它们必须存在于目标设备上的 qmltooling 文件夹中,该文件夹通常位于系统上 qt5 lib 文件夹中的插件文件夹中。
设备上缺少这些文件。所以我尝试 bitbake 工具链并从那里获取这些文件。但我得到的不是包含上述两个文件的 qmltooling 文件夹,而是包含一个不同名称 (libqmldbg_tcp_qtdeclarative.so) 的文件的 qml1tooling 文件夹。我没想到它会起作用,但它没有。
除此之外,我将 lib、bin、include 从 sysroots 复制到 /usr/lib、usr/bin 和 /usr/include 文件夹。但周围似乎没有任何动静。 任何帮助都将不胜感激。

我知道怎么做了。有问题的插件已在 meta-qt5 > recipes-qt > qt5 中的配方 qtbase_git.bb 中被禁用。我不得不评论这一行以使 bitbake 使用 qml-debug 选项配置 qtbase。

# PACKAGECONFIG[qml-debug] = "-qml-debug,-no-qml-debug"

默认选择的是 no-qml-debug,这是不允许它在 qt5 > plugins > qmltooling 文件夹中创建插件的原因。 另一件事,如果工具链被用来交叉编译你的 qml 应用程序,那么工具链也应该用上面的注释行重建,否则工具链将创建的二进制文件仍然不会启用 Qml 调试。

很老的话题了……但是,这仍然可以帮助观众: 启用 QML 调试的一种更简洁的方法是为 qtbase 添加一个 bbappend,并在里面简单地放置以下行:

PACKAGECONFIG_append = " qml-debug"

这等同于上面提出的修改,但更清晰,因为它不涉及修改基础配方。