gdb调试远程核心转储

时间:2013-03-07 16:45:22

标签: c++ debugging gdb remote-debugging

我有一个用C++写的服务器在我无法直接访问的生产环境中崩溃。崩溃产生了一个巨大的核心转储~34G,我无法在本地复制。我需要分析核心转储但不知道如何在不复制它的情况下完成它。我尝试在目标上运行gdbserver,但它不会将核心文件作为参数,并且似乎只适用于从主机调试运行远程应用程序。有没有办法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

  

我需要分析核心转储,但不知道如何在不复制它的情况下完成。

你做不到。您需要将核心转储到运行GDB的位置。

  

我不能ssh到远程计算机,但可以让sys管理员为我运行类似gdbserver的东西,但他无法分析和调试核心文件。

您不需要系统管理员来分析任何内容。您只需要让他运行一系列GDB命令,然后向您发送输出。 E.g。

where
thread apply all where
info registers
disas

...将为您提供理解问题的方式,并且将使您的系统管理员不到5分钟。

  

我仍然需要解压缩才能在gdb上运行它,我不想在本地计算机上运行它。

另外,和你的经理谈谈。您的开发设置不合理。您必须能够在本地分析生产崩溃,这意味着您必须能够访问一台足够强大的机器。