打印到内核日志的限制

问题描述 投票:3回答:1

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

是否有太多打印到内核日志的记录可能导致计算机停止响应?

非常感谢!

Omer

linux linux-kernel linux-device-driver printk
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.

正如您所看到的,当打印太多数据时,您只需开始覆盖一些您想在日志文件中看到的旧数据;这是一个问题,因为一些调试消息将消失,但不足以使整个事情崩溃。

[我建议您再次检查代码,尝试跟踪崩溃的时间/位置,如果无法解决问题,请在此处或某些内核黑客邮件列表中发布问题。

P.S还必须提及,您在放置printk语句时需要小心,因为某些代码区域可能无法忍受由此引起的延迟,并且这可能会导致进一步的问题,导致冻结/崩溃。

© www.soinside.com 2019 - 2024. All rights reserved.