6

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

我正在尝试开发一个内核模块,它基本上在内核网络堆栈内的 IP 层中捕获 IP 数据包,经过一些修改后,我必须将相同的数据包发送回 NIC 进行传输。

在所有这些过程中,我在printk()的帮助下编写调试信息。但是如果出现任何问题并且发生内核故障,我们必须重新启动系统。有没有办法获取我以前的调试信息,因为重新启动后调试信息不​​存在,因为我尝试通过dmesg命令获取它?

4

6 回答 6

8

实际上,/var/log/dmesg文件包含当前启动打印消息日志。/var/log/kern.log文件包含您之前在Ubuntu中的启动内核打印消息日志。在其他 Linux 风格中,它将包含在Fedora 等的/var/log/messages文件中。

于 2012-11-02T06:34:24.790 回答
4

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

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

查看dmesg 和 /var/log/kern.log 之间的区别

于 2012-11-02T06:23:30.317 回答
2

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

于 2012-11-02T06:42:58.840 回答
2

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

于 2012-11-02T05:13:52.067 回答
0

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

于 2020-12-21T03:38:15.927 回答
0

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

于 2016-05-03T04:38:29.620 回答