从核心文件中提取调试信息

时间:2013-08-13 19:39:19

标签: linux automation gdb coredump backtrace

我的任务是编写一个脚本来清理生产Linux服务器上的旧核心文件。虽然脚本编写起来并不困难,但我想在删除核心文件之前将基本堆栈回溯保存到日志文件中。

由于这些服务器是生产的,并且我们没有安装GDB或任何开发工具,我正在寻找一些快速而又脏的程序,它将为多线程应用程序提供gdb backtrace命令的模拟。

有谁知道这样的工具?

提前致谢。

1 个答案:

答案 0 :(得分:2)

有一些这样的事情。大多数情况下它们相对于gdb是不完整的 - 例如,回溯器打印有关函数参数或本地的信息并不常见,但gdb可以做到这一点。 gdb也可以在其他unwinders阻塞的情况下解除。

无论如何,我所知道的是elfutils。 https://fedorahosted.org/elfutils/。它在开发过程中有一个退绕(不确定它是否存在,请检查git)。

还有libbacktrace。它是gcc的一部分,专为进程中展开而设计。但是,它可能适用于核心文件。

还有libunwind。我听说它有点可怕,但YMMV。

需要注意的一点是,其中许多都需要debuginfo可用。

最后一个想法 - 在ABRT人员的“追踪”领域已经做了很多工作。 ABRT使用内核钩子来捕获核心转储。然后它通过将核心上传到服务器,文件错误等进行分析。您可以重用他们的大量工作。在这个领域还有其他一些工作。

有点大脑倾倒,我希望它有所帮助。