printk不适用于内核debgugging

时间:2011-11-11 07:33:28

标签: linux-kernel kernel linux-device-driver

我在内核代码中添加了一些调试消息。 检查了/ var / log / messages,dmesg,那里没有这样的转储。 syslogd正在机器上运行

我还将/ proc / sys / kernel / printk更改为 8 4 1 7

任何想法可能是什么问题?

2 个答案:

答案 0 :(得分:3)

我直到昨天才遇到同样的问题,当时我发现了一些有趣的东西。最近linux内核一直采用pr_ * *而不是printk(3.5版本及更高版本)。

我尝试在内核版本的3.3版本上使用printk运行基本模块程序。同样在3.7及以上。

以前的作品很好。之后只是没有在dmesg或/var/log/messages上显示printk。但是用pr_info宏替换了printk,完成了这项工作。(其他变体也有pr_err,pr_notice等在 include / linux / kernel.h 中找到,现在转移到< EM>包括/ LINUX / printk.h )

虽然pr_ * *宏已经很老了,但感谢Joe Perches的活动,他已经启动了上述变更,我们最好学习内核方法! (参考:pr_info()

答案 1 :(得分:1)

最简单的解释是您的printk()未被调用。

保持简单并坚持在调试此问题时检查dmesg(1)输出 - 所有syslog(3) /var/log/messages和基于控制台的输出都与消息问题分开甚至没有出现在内核的消息缓冲区中。