gpt4 book ai didi

linux - printk 消息未显示在 dmesg 日志中

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:52 44 4
gpt4 key购买 nike

为了好玩,我正在开发一个简单的驱动程序,我正在尝试使用 printk 消息对其进行调试。 dmesg 似乎没有显示最后一条 printk 消息,让它显示最后一条消息的唯一方法是再执行一次 printk,它又被 dmesg 吞没。

澄清的一些例子:在我模块的初始化函数中,我打印了以下语句:

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

在启动后第一次 insmoding 之后,我看到一 strip 有 dmesg 的“受污染的内核”消息,但是我看不到我打印的消息。

然后,我运行以下命令:

cat /dev/mymodule

调用我的 open 函数打印:

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

然后调用我的 read 函数打印:

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

然后就去 sleep 了。运行 dmesg 后(当 read 函数休眠时),我突然可以看到我的模块初始化消息,我也可以看到“cat opened”消息,但是缺少“cat reading”消息。

用 ctrl+c 终止 cat 会导致两次打印:“sleep interrupted”,然后是“cat released”。运行 dmesg 显示“sleep interrupted”消息,但缺少“cat released”消息,等等。

有人知道问题出在哪里吗?

最佳答案

您应该在每个 printk 消息的末尾添加\n,以免遗漏 dmesg 中的任何日志。这将解决您的问题。

关于linux - printk 消息未显示在 dmesg 日志中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940000/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com