为什么syslog和gdb为同一共享库显示不同的加载地址?

时间:2018-10-10 12:06:08

标签: c linux gdb shared-libraries

我面临细分错误。 Syslog报告以下内容:

segfault at 0 ip 00000000f71ff256 sp 00000000f44fee50 error 4 in libprotobuf-c.so.0.0.0[f71f8000+f000]

因此,libprotobuf-c.so已加载到0xf71f8000。当我在gdb中加载相应的核心文件并尝试info sharedlibrary时,它将FROM的地址显示为0xf71f9f70,这与syslog显示的地址不同。我无法理解这种不匹配。有人可以帮忙吗?

0xf71f9f70  0xf7204028  Yes (*)     /usr/lib/libprotobuf-c.so.0

1 个答案:

答案 0 :(得分:2)

  

因此,libprotobuf-c.so已加载到0xf71f8000。当我将相应的核心文件加载到gdb中并尝试了info sharedlibrary时,它将FROM地址显示为0xf71f9f70,这与syslog显示的内容不同。

实际上,它们是相同的。 GDB将.text的开头显示为From地址。

如果您执行readelf -WS /usr/lib/libprotobuf-c.so.0 | grep '\.text',则会发现.text0xf71f9f70 - 0xf71f8000 == 0x1f70开始。

相关问题