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