【问题标题】:Viewing Kernel logs after crash崩溃后查看内核日志
【发布时间】:2011-04-26 10:13:41
【问题描述】:
我正在调试系统崩溃。我收到了 OOPS 消息并找到了错误的代码。我希望在崩溃之前我有 dmesg 的输出。但是,我有内核的 System.map 文件。如何使用它来查看 dmesg 使用的环形缓冲区收集的最后一条消息。
日志消息肯定会附加到 RAM 中的某个日志文件中。您能帮我找到创建日志文件的地址吗?或者如何提取日志文件?
~谢谢
【问题讨论】:
标签:
debugging
crash
linux-kernel
【解决方案1】:
阿米特,
根据我开发 Linux 设备驱动程序的经验,我发现串行调试必不可少。这当然假设您有第二个系统可用于捕获串行输出。
要启用此功能,您需要做两件事:
在您的内核中启用SERIAL_8250_CONSOLE。如果您更喜欢使用make menuconfig,可以在Device Drivers \--> Character devices \--> Serial drivers \--> Console on 8250/16550 and compatible serial port 下找到它。
您还需要使用以下参数启动内核,以保持正常屏幕显示与串行输出console=tty0 console=ttyS0,115200 一起工作。
将您的开发站的串口连接到另一个站的串口(我通常使用运行 HyperTerm 的 Windows 机器)。
同样,这只是我发现在 Linux 调试中非常宝贵的一个选项。我希望你能好好利用它。
【解决方案2】:
现在比找一根串行电缆更容易(我的 2 台笔记本电脑甚至没有一个串行端口),但仅适用于崩溃发生 syslogd 可以写入磁盘
启动、崩溃、启动 livecd、读取 /var/log/messages
如果它发生在您拥有文件系统之前,您可能也可以通过 UDP 使用 loghost。参见 syslog/syslog-ng 手册