我的任务是编写一个脚本来清理生产Linux服务器上的旧核心文件。虽然这个脚本并不难写,但在删除核心文件之前,我想将基本的堆栈回溯保存到日志文件中。
由于这些服务器是生产服务器,我们没有安装GDB或任何开发工具,我正在寻找一些快速而肮脏的程序,它将为多线程应用程序提供类似GDB回溯命令的功能。
有人知道这样的工具吗?
提前谢谢。
有一些类似的事情。大多数情况下,相对于gdb,它们是不完整的——例如,回溯程序打印关于函数参数或局部变量的信息是不常见的,但gdb可以做到这一点。此外,gdb通常可以在其他开卷机卡住的情况下展开。
不管怎样,我知道的一个是精灵。https://fedorahosted.org/elfutils/.它有一个正在开发中的解卷器(不确定它是否在中,请检查git)。
还有libbacktrace。它是gcc的一部分,专为进程内展开而设计。然而,它也许可以适应核心文件。
还有libunflex。我听说这有点可怕,但YMMV。
需要注意的一点是,其中许多都需要提供debuginfo。
最后一个想法是,ABRT人员在"追踪"领域做了很多工作。ABRT使用内核挂钩来捕获正在进行的核心转储。然后它通过将核心上传到服务器、文件bug等进行分析。你可能会重用他们的很多工作。这个领域还有其他一些工作。
有点像大脑垃圾堆,我希望它能有所帮助。