调试分段错误

调试分段错误

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

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

回溯停止:帧未保存 PC

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

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

答案1

网上曾有过类似主题的讨论格马内根图论坛,所以可以在那里找到答案。

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

相关内容