在设备驱动程序偶尔会出现混乱的 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
) 完成。值得一试,因为几乎不费吹灰之力。