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

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

~谢谢

最佳答案

阿米特,

根据我开发 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 调试中非常宝贵的一个选项。我希望你能好好利用它。

    关于debugging - 崩溃后查看内核日志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5788853/

    10-16 19:03