【问题标题】:How can I debug program linking specific version of shared library?如何调试链接特定版本的共享库的程序?
【发布时间】:2016-06-26 06:20:00
【问题描述】:

helloworld.c:

int main(){}

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

此预加载 libc 是 glibc 的旧版本

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

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

【问题讨论】:

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


    【解决方案1】:

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

    是的,但您需要正确执行。 This answer 提供了详细信息,并解释了为什么您的 LD_PRELOAD 不起作用。

    【讨论】:

      【解决方案2】:
      • 从您的帖子中,我可以看到 POC 转储核心。因此,最好使用 gdb 分析 coredump 并查看崩溃的调用堆栈。确保在分析 coredump 时在 gdb 中加载正确的 libc。
      • 否则,在调用 POC 之前使用 LD_DEBUG=all 并通过在运行时查看详细信息来查看是否有任何指针崩溃。

      【讨论】:

      • 对不起,我误导了你。 POC 转储核心?不,我很脆弱。我没有运行 POC。我只是明白这根本与 POC 无关。我更新了我的帖子。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      相关资源
      最近更新 更多