5

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

4

1 回答 1

1

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

你不能。您需要将核心转储放到可以运行 GDB 的位置。

我无法通过 ssh 连接到远程机器,但可以要求系统管理员为我运行 gdbserver 之类的东西,但他无法分析和调试核心文件。

您不需要系统管理员来分析任何内容。您只需要让他运行一系列 GDB 命令,并将输出发送给您。例如

where
thread apply all where
info registers
disas

... 将使您了解问题的方式很长,并且您的系统管理员将花费不到 5 分钟的时间。

我仍然需要解压缩它才能在 gdb 上运行它,我不想在我的本地机器上这样做。

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

于 2013-03-09T16:14:43.523 回答