在内核崩溃后获取Linux内核调试信息

时间:2012-11-02 05:02:50

标签: c linux debugging linux-kernel

在内核崩溃发生后,有没有办法获取内核以前的调试信息。

我正在尝试开发一个内核模块,它基本上捕获内核网络堆栈内的IP层中的IP数据包。经过一些修改后,我必须将相同的数据包发送回NIC进行传输。在所有这些过程中,我在 printk()的帮助下编写调试信息。但如果出现任何问题&发生内核故障所以我们必须重新启动系统。那么有没有办法得到我以前的调试信息,因为重启后调试信息不​​存在,因为我尝试通过 dmesg 命令获取它。

6 个答案:

答案 0 :(得分:7)

实际上/ var / log / dmesg文件包含当前的引导打印消息日志。 /var/log/kern.log文件包含ubuntu中以前的引导内核打印消息日志。在其他Linux风格中,它将包含在fedora等的/ var / log / messages文件中。

答案 1 :(得分:4)

即使重新启动系统,也可以在/var/log/dmesg个文件中查看内核日志消息。

dmesg.X会有这么多文件,这些文件是以前的内核日志。 dmesg是最新文件。

difference between dmesg and /var/log/kern.log

答案 2 :(得分:2)

您可以尝试通过键盘或串行控制台输入magic SysRq键序列来与挂起的系统进行交互。

答案 3 :(得分:2)

Linux的最新版本支持crash dumps。如果成功,这些将包括完整的内存转储,包括内核日志消息和堆栈跟踪。

答案 4 :(得分:0)

实际上,崩溃信息(dmesg)存在于/ var / crash /中。 这里我们有每个系统崩溃的文件夹。文件夹名称如127.0.0.1-date-time。 vmcore-dmesg.txt存在于文件夹中。从这些文件中,我们得到了崩溃前执行的dmesg。

答案 5 :(得分:0)

GNOME Logs 是一个非常有用的软件。您可以将日志消息限制为最后一个会话,并轻松阅读崩溃前的最后一条消息。