在Linux系统(DaVinci板)上配置QT、QML应用程序



晚上好,我继承了一个使用QT创建者(C++和QT Quick)创建的项目。目标是一块DaVinci DM8168板,上面有**Linux内核2.6.37**。

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

我可以建立&为目标运行应用程序,我可以看到它在运行。

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

qmljsdebugger=port:xxxx

则应用程序不再启动!

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

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

I、 显然,在调试模式下构建。

当我试图在目标上运行应用程序时,我得到了这样的消息:

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

我尝试了与上面相同的解决方案,但在一个简单的程序上(基本上是"你好世界"),当指定"-qmljsdebugger=port:3456"选项时,它不会崩溃。。。我真的不知道我原来的申请中有什么问题。

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

一个重要的注意事项是,如何使qml调试工作在Qt Quick 1和Qt Quick 2之间发生了变化。由于您正在使用Qt 5,我认为您应该使用Qt Quick 2。这意味着您不应该使用QT_DECLARATIVE_DEBUG,而应该使用QT_QML_DEBUG

更多详细信息:https://doc.qt.io/qt-5/qtquick-debugging.html#qml-调试基础设施

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

最新更新