3

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

内核日志打印过多是否可能导致计算机停止响应?

非常感谢!

奥马尔

4

1 回答 1

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语句的位置,因为某些代码区域可能无法容忍由它引起的延迟,这可能会导致进一步的问题导致冻结/崩溃。

于 2013-03-22T16:16:19.527 回答