2013-03-22 127 views
3

我工作在Linux設備驅動程序(內核版本2.6.32-37)。我主要是調試我的代碼通過打印到內核日誌(使用printk的)。一切順利,直到我的電腦突然停止響應。我一遍又一遍地檢查過,我的代碼似乎是正確的。 我的問題是:限制內核日誌

是有可能,太多的印刷內核日誌可能會導致計算機停止響應?

非常感謝!

奧馬爾

+1

如果你使用'printk的你可以這樣做()'在中斷,這取決於你的意思是*停止響應*什麼。請看'printk_ratelimit()'。 – 2013-03-22 17:32:12

回答

3

我懷疑問題是由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語句,因爲某些代碼區可能不能容忍它造成的延遲,這可能會導致進一步的問題導致凍結/崩潰。