我正在研究Linux设备驱动程序(内核版本2.6.32-37)。我主要通过打印到内核日志来调试我的代码(使用printk)。一切顺利,直到我的电脑突然停止响应。我一遍又一遍地检查它,我的代码似乎是正确的。 我的问题是:
内核日志打印太多可能会导致计算机停止响应吗?
非常感谢!
Omer
答案 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
语句的地方,因为某些代码区域可能无法容忍由此引起的延迟,这可能会导致导致冻结/崩溃的进一步问题。