我正在开发linux设备驱动程序(内核版本2.6.32-37)。我主要通过打印内核日志(使用printk)来调试代码。一切都很顺利,直到我的电脑突然停止响应。我检查了一遍又一遍,我的代码似乎是正确的。我的问题是
是否有可能,太多的打印到内核日志可能会导致计算机停止响应?
非常感谢!
俄梅珥
我怀疑这个问题是由printk
引起的,当然使用printk
本身会减慢整个代码的速度,但它不会使你的系统崩溃。
下面是来自Ubuntu内核调试技巧的一段话: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.
你可以读到,当打印太多的数据时,你会简单地开始写一些你想在日志文件中看到的旧数据;这是一个问题,因为一些调试信息会消失,但不会麻烦到使整个程序崩溃。
我建议你再次仔细检查你的代码,试着跟踪它何时/在哪里崩溃,如果你不能解决问题,在这里或在一些内核黑客邮件列表中发布一个问题。
p。S还必须提到,您需要小心放置printk
语句的位置,因为某些代码区域可能无法容忍由它引起的延迟,这可能会导致进一步的问题,导致冻结/崩溃。