我应该如何捕获 Linux 内核恐慌堆栈跟踪?

我应该如何捕获 Linux 内核恐慌堆栈跟踪?

在设备驱动程序偶尔会出现混乱的 Linux 系统(RHEL 5.x,内核 2.6.18)上捕获完整内核堆栈跟踪的当前最佳实践是什么?

我习惯于“旧” SunOS 的做事方式 - 将崩溃转储写入交换,并在重新启动时在本地文件系统中检索转储。 man 8 crash指的是diskdump,但这似乎不受支持。和/或已被弃用。

我玩过kdump,但不清楚是否可以从中获得堆栈跟踪。通过 Magic SysRq 触发恐慌并没有产生恐慌。为kexec崩溃恢复内核保留这么多内存(128MB)似乎也很浪费。

答案1

如果您希望在 Linux 出现内核崩溃时记录输出,kdump这是可行的方法。这是 Red Hat 培训人们使用的方法,也是我所知道的标准方法。

答案2

也许堆栈跟踪可以通过 netconsole ( /usr/src/linux/Documentation/networking/netconsole.txt) 完成。值得一试,因为几乎不费吹灰之力。

相关内容