我在哪里可以找到内核日志中的 oops 信息

Where could I find the oops info from kernel logs

我是驱动开发新手。我已经根据 Linux 设备驱动程序 第 4 章配置了我的 linux 内核,启用了很多调试配置。当我尝试测试我编写的驱动程序时,内核发出 oops。然而,这个 oops 立即被其他调试信息块刷新。那么,我在哪里可以找到瞬间发生的oops信息。

对了,谁能解释一下下面调试信息的意思?

[ 1698.129712] evbug: Event. Dev: input0, Type: 0, Code: 0, Value: 0

这种消息刷屏我都挡不住

为了避免大量无用信息(在您的情况下),您必须只启用调试模块真正需要的信息。我强烈建议禁用您启用的所有内容。然后根据具体情况启用调试功能。

接下来,内核中有一个很好的框架叫做Dynamic Debug. It allows at runtime enable or disable certain debug messages (be sure you have CONFIG_DYNAMIC_DEBUG=y in the Linux kernel configuration). More detailed description is available in Documentation/dynamic-debug-howto.txt

evbug是内核中监听输入事件的模块。它可以发出其中一条消息。它非常简单,您可以在 drivers/input/evbug.c 中查看。不幸的是,它直接使用 printk() 调用,您无法通过动态调试操作其输出。

最后,您的主题问题的答案是检查 dmesg 命令的输出。但请注意,用于输出的内核缓冲区足够小,如果您有很多日志,您可能会错过其中一些。