我遇到了一个需要帮助解决的奇怪行为。我们使用Qt Creator为我们的i.MX6开发了一个Qt 5.8应用程序。 当应用程序通过shell使用以下参数直接(或通过gdb)在目标上启动时,应用程序在调试模式下正确运行:
-qmljsdebugger=port:10001,services:DebugMessages,QmlDebugger,V8Debugger,QmlInspector
但是,无论何时从主机启动远程gdb,都会打印出重定位错误。此行为开始出现 最近,当更多信号/属性被添加到模型中时(与现有模型没有任何不同)。
以下内容在Qt Creator中打印:
Debugging starts
Listening on port 10000
Remote debugging from host 192.168.213.11
Process /opt/app/bin/app created; pid = 4923
/opt/app/bin/app: relocation error: /opt/app/bin/app: symbol _ZTVN10__cxxabiv120__si_class���e_infoE, version CXXABI_1.3 not defined in file libstdc++.so.6 with link time reference
如果从代码中删除了以下行(+一个发射),则它会正确启动:
Q_PROPERTY(bool deleted READ getDeleted WRITE setDeleted NOTIFY deletedChanged)
Q_SIGNAL void deletedChanged();
我还注意到,如果添加了额外的信号,我会得到不同的错误信息,例如,如果添加了3个新的未使用信号(似乎添加信号的模型无关紧要)我得到了
/opt/app/bin/app: relocation error: /opt/app/bin/app: symbol ���St9exception, version GLIBCXX_3.4 not defined in file libstdc++.so.6 with link time reference
该项目共有约25个模型,共有约100个属性。
任何想法从哪里开始?
编辑:目标库和应用程序在新启动时预先链接一次。我注意到,如果在gdb-debugging开始之前预先链接调试应用程序,它可以正常工作。不确定我理解为什么。