在 embedded linux 開發過程中,常常會為了對 kernel space 進行追蹤而使用 printk,但是每次編譯重燒是很耗費時間的,所以直接在執行時期控制 printk 的訊息要不要顯示出來,會是追蹤的一門重要技巧。
參考
printk 提供了一個在執行時期的控制介面,/proc/sys/kernel/printk
#cat /proc/sys/kernel/printk
7 4 1 7
第一個數字代表要印出來的最低等級,也就是等級高於或等於7 (KERN_DEBUG) 都會被印出來
第二個數字代表 printk 沒有指定等級的預設等級 4 (KERN_WARNING)
因為 KERN_WARNING 等級高於 KERN_DEBUG,所以目前不指定等級的 printk() 都會被印出來。
如果只想看到嚴重等級以上的訊息,可以直接
#echo 2 > /proc/sys/kernel/printk
#cat /proc/sys/kernel/printk
2 4 1 7
這樣未指定等級的訊息就不會顯示出來,甚至等級為 KERN_ERR 的訊息也都忍住不噴出了。
以下列出各等級資料:
以下列出各等級資料:
Name | String | Meaning | alias function |
---|---|---|---|
KERN_EMERG | "0" | Emergency messages, system is about to crash or is unstable | pr_emerg |
KERN_ALERT | "1" | Something bad happened and action must be taken immediately | pr_alert |
KERN_CRIT | "2" | A critical condition occurred like a serious hardware/software failure | pr_crit |
KERN_ERR | "3" | An error condition, often used by drivers to indicate difficulties with the hardware | pr_err |
KERN_WARNING | "4" | A warning, meaning nothing serious by itself but might indicate problems | pr_warning |
KERN_NOTICE | "5" | Nothing serious, but notably nevertheless. Often used to report security events. | pr_notice |
KERN_INFO | "6" | Informational message e.g. startup information at driver initialization | pr_info |
KERN_DEBUG | "7" | Debug messages | pr_debug, pr_devel if DEBUG is defined |
KERN_DEFAULT | "d" | The default kernel loglevel | |
KERN_CONT | "" | "continued" line of log printout (only done after a line that had no enclosing \n) [1] | pr_cont |
沒有留言:
張貼留言