我有一个用C++
写的服务器在我无法直接访问的生产环境中崩溃。崩溃产生了一个巨大的核心转储~34G,我无法在本地复制。我需要分析核心转储但不知道如何在不复制它的情况下完成它。我尝试在目标上运行gdbserver
,但它不会将核心文件作为参数,并且似乎只适用于从主机调试运行远程应用程序。有没有办法可以做到这一点?
答案 0 :(得分:1)
我需要分析核心转储,但不知道如何在不复制它的情况下完成。
你做不到。您需要将核心转储到运行GDB的位置。
我不能ssh到远程计算机,但可以让sys管理员为我运行类似gdbserver的东西,但他无法分析和调试核心文件。
您不需要系统管理员来分析任何内容。您只需要让他运行一系列GDB命令,然后向您发送输出。 E.g。
where
thread apply all where
info registers
disas
...将为您提供理解问题的长方式,并且将使您的系统管理员不到5分钟。
我仍然需要解压缩才能在gdb上运行它,我不想在本地计算机上运行它。
另外,和你的经理谈谈。您的开发设置不合理。您必须能够在本地分析生产崩溃,这意味着您必须能够访问一台足够强大的机器。