反汇编共享库 - 显示哪个版本?

时间:2017-04-13 14:06:12

标签: gdb shared-libraries

我正在使用gdb来调试间歇性崩溃。我可以打开核心转储,并看到崩溃发生在共享库中。 (我可以在回溯中看到函数名和库的文件名,但我没有库的源代码。)

同时,库已更新,因此文件名现在拥有的库版本与生成核心转储时加载的库版本不同。

我可以运行disassemble来查看发生崩溃的函数的机器代码 - 但是我会在发生崩溃时看到正在使用的版本的代码,或者gdb是否会从库文件中加载代码在磁盘上,从而选择不匹配的版本?

1 个答案:

答案 0 :(得分:1)

  

我会在崩溃发生时看到正在使用的版本中的代码,还是gdb会从磁盘上的库文件中加载代码,从而选择不匹配的版本?

后者(不匹配的版本)。

默认情况下,可执行文件(和其他只读映射) 保存在core中以节省空间 - 内容 已经可用磁盘。

在Linux上,您可以要求系统保存只读映射:

echo 0x7 > /proc/self/coredump_filter

请参阅man 5 core