我工作在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.
正如您可以閱讀,打印太多的數據時,你會簡單地開始寫了,你想在日誌文件中看到一些舊的數據;這是一個問題,因爲一些調試消息將消失,但沒有足夠的麻煩崩潰了整個事情。
我建議你仔細檢查你的代碼再次,請嘗試在/在那裏的崩潰跟蹤,如果你能不能解決問題張貼問題在這裏或在一些內核黑客郵件列表。
P.S還得提一下,你需要小心你在什麼地方放置你的printk
語句,因爲某些代碼區可能不能容忍它造成的延遲,這可能會導致進一步的問題導致凍結/崩潰。
如果你使用'printk的你可以這樣做()'在中斷,這取決於你的意思是*停止響應*什麼。請看'printk_ratelimit()'。 – 2013-03-22 17:32:12