利用linux kernel中內建的pr_dbg和dev_dbg來進行調試,避免不斷的內核開發上比較費時的edit/rebuild/reboot操做。經過修改/sys/kernel/debug/dynamic_debug下的control文件,能夠控制打印輸出。可選功能以下linux
1. 某個模塊中的pr_dbg和dev_dbg是否打印。函數
2. 某個文件中的pr_dbg和dev_dbg是都打印。ui
3. 某個函數中的pr_dbg和dev_dbg是否打印。spa
4. 某些行中的pr_dbg和dev_dbg是否打印。.net
5. 符合某種format的格式的打印。debug
能夠利用如下步驟開啓這個功能。調試
1. 修改.config文件code
CONFIG_DYNAMIC_DEBUG=yorm
CONIFG_DEBUG_FS=yci
CONFIG_[SUBSYSTEM]_VERBOSE_PRINTK=y
(eg. CONFIG_SND_VERBOSE_PRINTK=y)
CONFIG_[SUBSYSTEM]_DEBUG=y
(eg. CONFIG_SND_DEBUG=y)
2. 從新編譯kernel
3. 啓動後,將debug filesystem掛載到某個目錄下。
mount -t debugfs none /sys/kernel/debug
4. 修改/sys/kernel/debug/dynamic_debug目錄下的control來enalbe或者disable某些輸出。
(參考: kernel_imx/Documentation/dynamic-debug-howto.txt)
(eg. echo 'file sound/soc/codecs/wm8994.c +p' > control來打開此文件中的pr_dbg和dev_dbg輸出, echo 'file sound/soc/codecs/wm8994.c -p' > control來關閉這兩個輸出)
5. http://lwn.net/Articles/434833/中說能夠下bootargs中添加ddebug_query參數,使boot time時就能夠用dynamic debugging,可是我試了下,不行。
參考: kernel_imx/Documentation/dynamic-debug-howto.txt