0

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

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

有人知道这样的工具吗?

提前致谢。

4

1 回答 1

2

有几件事是这样的。大多数情况下,它们相对于 gdb 是不完整的——例如,回溯器打印有关函数参数或局部变量的信息并不常见,但 gdb 可以做到这一点。在其他展开器阻塞的情况下,gdb 也经常可以展开。

无论如何,我知道的一个是elfutils。https://fedorahosted.org/elfutils/。它有一个正在开发的展开器(不确定它是否在或尚未,检查 git)。

还有libbacktrace。它是 gcc 的一部分,专为进程内展开而设计。但是,它也许可以适应核心文件。

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

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

最后一个想法——ABRT 人员在“catch a trace”领域做了很多工作。ABRT 使用内核挂钩来捕获正在生成的核心转储。然后它通过将核心上传到服务器、文件错误等来进行分析。你也许可以重用他们的很多工作。在这个领域还有一些其他的工作。

有点脑残,希望对你有帮助。

于 2013-08-14T02:18:28.310 回答