打印到内核日志的限制

时间:2013-03-22 15:59:50

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

我正在研究Linux设备驱动程序(内核版本2.6.32-37)。我主要通过打印到内核日志来调试我的代码(使用printk)。一切顺利,直到我的电脑突然停止响应。我一遍又一遍地检查它,我的代码似乎是正确的。 我的问题是:

内核日志打印太多可能会导致计算机停止响应吗?

非常感谢!

Omer

1 个答案:

答案 0 :(得分:4)

我怀疑问题是由printk造成的,当然使用printk本身会降低整个代码的速度,但不会导致系统崩溃。

以下是Ubuntu Kernel Debugging Trick的引用: The internal kernel console message buffer can sometimes be too small to capture all of the printk messages, especially when debug code generates a lot of printk messages. If the buffer fills up, it wraps around and one can lose valueable debug messages.

正如您所读到的,当打印太多数据时,您只需开始编写您希望在日志文件中看到的一些旧数据;这是一个问题,因为一些调试消息会消失,但不会让整个事情崩溃。

我建议您再次仔细检查您的代码,尝试跟踪崩溃的时间/地点,以及如果您无法解决此问题或在某个内核黑客邮件列表中发布问题。

PS还要提一下,你需要注意放置printk语句的地方,因为某些代码区域可能无法容忍由此引起的延迟,这可能会导致导致冻结/崩溃的进一步问题。