2011-04-26 164 views
3

我在调试系统崩溃。我收到了OOPS消息,并找到了一些错误的代码。我希望在碰撞发生前我已经输出了dmesg。但是,我有内核的System.map文件。我如何使用它来查看由dmesg使用的环形缓冲区收集的最后消息。崩溃后查看内核日志

日志消息肯定会附加到RAM中的某些日志文件中。你能帮我找到创建日志文件的地址,或者我如何提取日志文件?

〜感谢

+0

你检查过'/ var/log/messages'吗? – 2011-04-26 12:47:00

+1

是的,但它没有包含崩溃运行的日志。 – 2011-04-28 03:50:37

回答

5

艾米特,

在我的经验,开发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调试中发现的无价之宝。我希望你能很好地使用它。

0

更容易比找一个串行电缆这些天(我2台笔记本电脑甚至没有一个串行端口),但只适用于在崩溃发生后syslogd的可以写入到磁盘

开机,死机,开机一个livecd,读取/ var/log/messages如果它发生在你有文件系统之前,你可能也有运气使用一个日志主机通过UDP的运气。请参阅syslog/syslog-ng的手动

0

我不知道很多关于这些,但我知道,当我在我的Gentoo,而不是syslog-ng安装metalog,该/var/log/kernel/current文件不会被覆盖上启动,但附加。所以我可以从那里得到以前的靴子dmesg。

但是,这假设消息可以从省略呼叫站点一直到后备存储。

也有一些解决方案,使用kexec切换到救援内核/系统,将执行所有必要的日志记录,但我还没有经验。