使用gdb时重定位错误

时间:2017-06-27 06:28:02

标签: c++ qt qml qt-creator gdbserver

我遇到了一个需要帮助解决的奇怪行为。我们使用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开始之前预先链接调试应用程序,它可以正常工作。不确定我理解为什么。

0 个答案:

没有答案