如何调试程序链接特定版本的共享库?

时间:2016-06-26 06:20:00

标签: linker shared-libraries cross-platform glibc libc

helloworld.c:

int main(){}

[1] 9845非法硬件指令(核心转储)LD_PRELOAD =。/ libc.so.6 ./helloworld

这个预加载libc是glibc的旧版本

我可以调试在我的系统上链接它的helloworld吗?

或者有一种快速的方法来部署具有特定版本共享库的虚拟机吗?

2 个答案:

答案 0 :(得分:0)

  • 从你的帖子我可以看到POC倾销核心。因此,最好使用gdb来分析coredump并查看崩溃的callstack。确保在分析coredump时在gdb中加载正确的libc。
  • 否则在调用POC之前使用LD_DEBUG = all,并通过在运行时查看详细信息来查看是否有任何指针崩溃。

答案 1 :(得分:0)

  

我可以调试在我的系统上链接它的helloworld吗?

是的,但您需要正确完成。 This answer提供了详细信息,并说明了LD_PRELOAD无效的原因。