DMESG日志中未显示的printk消息



我正在开发一个简单的驱动程序,以获取乐趣,我正在尝试使用printk消息进行调试。dmesg似乎没有显示最后的printk消息,而获取它显示最后一条消息的唯一方法是执行另一个printk,而dmesg也会吞噬。

一些澄清示例:在我的模块的初始功能中,我打印以下语句:

printk(KERN_INFO "%s loaded with major: %u, minor: 0", ...);

在启动后第一次insmod之后,我看到了dmesg的"污染内核"消息,但是我看不到我打印的消息。

然后,我运行以下命令:

cat /dev/mymodule

调用我的open功能,该功能打印:

printk(KERN_DEBUG "%s opened", ...);

然后调用我的read功能,该功能打印:

printk(KERN_DEBUG "%s reading", current->comm);

然后入睡。运行dmesg(当读取功能睡觉时)后,我可以突然看到我的模块init消息,我也可以看到"猫打开"消息,但是"猫读"消息丢失了。

用ctrl c终止猫会导致两个印刷品:"睡眠中断",然后"释放猫"。运行dmesg显示"睡眠中断"消息,但是"猫发布"消息丢失,依此类推。

有人知道问题可能是什么吗?

您应该在每个printk消息结束时添加 n,不要错过DMESG中的任何日志。这将解决您的问题。

相关内容

  • 没有找到相关文章

最新更新