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

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

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

我玩过kdump ,但是我能否从中获得堆栈跟踪尚不清楚。 通过Magic SysRq引发恐慌并没有造成恐慌。 为kexec崩溃恢复内核预留如此多的内存(128MB)似乎也是浪费。

如果你正在寻找logging输出的情况下与Linux内核恐慌, kdump是要走的路。 这正是红帽培训人们使用的,以及我所知道的标准方法。

也许堆栈跟踪通过netconsole( /usr/src/linux/Documentation/networking/netconsole.txt )。 值得一试,因为它几乎没有任何的努力。