0

晚上好,我继承了一个使用QT creator(C++ 和 Qt Quick)制作的项目。目标是带有 **Linux kernel 2.6.37 ** 的DaVinci DM8168板。

特别是我使用 Qt Creator 4.2.0 (4.2.0) 基于Qt 5.7.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bit)

我可以为目标构建和运行应用程序,并且可以看到它正在运行。

我需要启动分析器。但它不起作用。当我使用参数运行应用程序(在目标上)时:

qmljsdebugger=port:xxxx

然后应用程序不再启动!

我尝试将这些选项添加到项目的 .pro 文件中:

DEFINES   ''    +=  QMLJSDEBUGGER         
DEFINES   ''    +=  QT_DECLARATIVE_DEBUG   
PACKAGECONFIG_append = " qml-debug"

显然,我是在调试模式下构建的。

当我尝试在目标上运行应用程序时,我收到以下消息:

QML 调试已启用。仅在安全的环境中使用。进程被信号杀死

我再说一遍:如果选项“qmljsdebugger=port:xxxx”被删除,那么应用程序将启动并正常工作..但当然在这种情况下分析器不会连接。

正如我所说,我继承了该项目,并且对这个环境完全陌生。

有什么帮助或建议吗?

更新

这些现在是我添加到 .pro 文件中的行

DEFINES   ''    +=  QMLJSDEBUGGER
DEFINES   ''    +=  QT_QML_DEBUG
CONFIG          +=  qml_debug

我检查了 QT 的各种路径并导出PATHLD_LIBRARY_PATH. 不幸的是,没有任何改变:如果我使用以下方式启动我的程序:

  /opt/MyPrefix/MyProgram -platform eglfs 

然后它工作。

如果我使用:

   /opt/MyPrefix/MyProgram -qmljsdebugger=port:3456 -platform eglfs 

然后它崩溃了

QML 调试已启用。仅在安全的环境中使用。分段故障

该程序似乎以调试模式启动,这没关系。问题是探查器:(

ps:据我所知,目标上没有运行防火墙。我一定会检查得更好。

更新 2

我尝试了与上述相同的解决方案,但在一个简单的程序上尝试了建议(基本上是“hello world”),并且在指定“-qmljsdebugger=port:3456”选项时它不会崩溃......我真的不知道是什么问题出在我原来的应用程序中。

4

1 回答 1

0

首先,让 qml 调试运行有一些先决条件,例如确保 Qt 是使用与二进制文件完全相同的工具链构建的。你应该看看 Qt Wiki:https ://wiki.qt.io/How_To_Profile_QML_App_on_Embedded_Device

一个重要的注意事项是,在 Qt Quick 1 和 Qt Quick 2 之间,您进行 qml 调试的方式发生了变化。当您使用 Qt 5 时,我相信您应该使用 Qt Quick 2。所以这意味着您不应该使用QT_DECLARATIVE_DEBUG,而是使用QT_QML_DEBUG.

更多细节:https ://doc.qt.io/qt-5/qtquick-debugging.html#qml-debugging-infrastructure

如果在使用正确的 DEFINES 并确保满足所有先决条件后仍然有问题,那么您应该尝试使用什么都不做的基本 Qt 程序,但显示一个简单的 QML 项目(如矩形或按钮)并查看您是否仍然有问题。

于 2019-07-08T14:46:01.063 回答