调试分段错误

waf*_*man 6 embedded dynamic-linking application crash

我有一个在嵌入式 Linux 设备上运行的应用程序,我正在扩展它的新功能。新功能需要 GLib,因此我正在将所需的库动态链接到应用程序。

当我这样做并在设备上运行应用程序时,出现分段错误。当我动态链接新库时会发生这种情况。GDB 的回溯显示故障发生在另一个自定义动态链接库中。不幸的是,我只得到了以下消息的部分跟踪:

回溯停止:帧没有保存 PC

请注意,我只是链接了另一个共享库,并未添加任何新代码。如果我静态链接自定义库,崩溃就会消失。我怀疑内存损坏发生在其他地方,并且当动态链接自定义库以便发生分段时,条件(即内存映射)恰到好处。

任何人都知道我可以用来进一步调试的任何好的工具和技术?

Kar*_*son 2

GmaneGentoo论坛上有过类似主题的讨论,所以可以在那里找到答案。

此外,我建议首先查看您的程序在运行时是否会加载正确的库,因此尝试ldd动态链接文件以查看您实际上正在针对正确的版本运行,然后运行该程序,valgrind因为您完全有可能正在寻址内存你不应该并且valgrind能够向你展示这一点。