晚上好 我继承了一个使用 QT creator(C++ 和 Qt Quick)制作的项目。 目标是带有 **Linux 内核 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 位)
我可以为目标构建和运行应用程序,并且可以看到它正在运行。
我需要启动探查器。但它不起作用。当我使用参数运行应用程序(在目标上)时:
qmljsdebugger=port:xxxx
然后应用程序不再启动!
我尝试将这些选项添加到项目的 .pro 文件中:
DEFINES '' += QMLJSDEBUGGER
DEFINES '' += QT_DECLARATIVE_DEBUG
PACKAGECONFIG_append = " qml-debug"
显然,我是在 Debug模式下构建的。
当我尝试在目标上运行应用程序时,我收到此消息:
QML debugging is enabled. Only use this in a safe environment. Process killed by signal
我再说一遍:如果选项“qmljsdebugger=port:xxxx”被删除,那么应用程序将启动并正常工作..但在这种情况下分析器当然不会连接。
正如我所说,我继承了这个项目,但我对这个环境完全陌生。
有什么帮助或建议吗?
更新
现在这些是我添加到 .pro 文件中的行
DEFINES '' += QMLJSDEBUGGER
DEFINES '' += QT_QML_DEBUG
CONFIG += qml_debug
我检查了 QT 的各种路径并导出了 PATH
和 LD_LIBRARY_PATH
。
不幸的是没有任何改变:
如果我使用以下方式启动我的程序:
/opt/MyPrefix/MyProgram -platform eglfs
然后就可以了。
如果我使用:
/opt/MyPrefix/MyProgram -qmljsdebugger=port:3456 -platform eglfs
然后它崩溃了
QML debugging is enabled. Only use this in a safe environment. Segmentation fault
程序似乎以 Debug模式启动,这没问题。问题是探查器:(
ps:据我所知,目标上没有运行防火墙。我一定会检查得更好。
更新2
我尝试了与上面相同的解决方案,但是在一个简单的程序上(基本上是一个“hello world”)并且当指定“-qmljsdebugger=port:3456”选项时它不会崩溃......我真的不我不知道我原来的应用程序有什么问题。
最佳答案
首先,运行 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 项目(如矩形或按钮)ans看看问题是否仍然存在。
关于linux - 简介 QT,QML 应用程序,在 Linux 系统上(达芬奇板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934486/