【问题标题】:Viewing Kernel logs after crash崩溃后查看内核日志
【发布时间】:2011-04-26 10:13:41
【问题描述】:

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

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

~谢谢

【问题讨论】:

  • 你检查过/var/log/messages吗?
  • 是的,但它不包含崩溃运行的日志。

标签: 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 手册

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多