晚上好,我继承了一个使用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的各种路径,并导出了PATH
和LD_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项目(如矩形或按钮),看看您是否仍然有问题。