控制kernel message level的方法




在開發kernel module最常用,也最直接的方法就是printk, 將訊息印出來方便我們除錯.
但有時程式不是我們自己寫的, 又加了非常多的debug message, 有時加在read/write function裡, 讓不時跳出來的message, 尤其在embedded system上, 幾乎讓UART consol沒加辦法再接受任何指令.甚至有讓UART當掉的可能.
最快的方法就是先暫時把printk的訊息關掉./proc下有提供了我們一些提示.

# cat /proc/sys/kernel/printk
7 4 1 7
這表示的是原本printk的訊息優先權(printk level), 每個值都有自己的意義.


  1. Messages with a higher priority than console_loglevel will be printed to the console.
  2. Messages without an explicit priority will be printed with priority default_message_level.
  3. Minimum_console_loglevel is the minimum (highest) value to which console_loglevel can be set.
  4. default_console_loglevel is the default value for console_loglevel.
所以第二項的值是用來控制printk的level. 而第一項則是則是控制所有的message都印出來.
因此我們在不詳細探究所有的使用方法的前提之下.

#echo "0 0 0 0" > /proc/sys/kernel/printk

就看不到任何的printk訊息了.
但是看不見不代表不存在, 我們還是可以用dmesg或者是tail -f /var/log/messages, 來看到printk訊息.
再者因為過多的debug message而影響效能的問題則還是依然存在, 並不會消失.

echo "7 4 1 7" > /proc/sys/kernel/printk

    全站熱搜

    立你斯 發表在 痞客邦 留言(0) 人氣()