您的位置:首页 > 运维架构 > Linux

Dynamic Debugging in Linux Kernel(1) --- How To...

2011-12-13 17:38 465 查看
利用linux kernel中内建的pr_dbg和dev_dbg来进行调试,避免不断的内核开发上比较费时的edit/rebuild/reboot操作。通过修改/sys/kernel/debug/dynamic_debug下的control文件,可以控制打印输出。可选功能如下

1. 某个模块中的pr_dbg和dev_dbg是否打印。

2. 某个文件中的pr_dbg和dev_dbg是都打印。

3. 某个函数中的pr_dbg和dev_dbg是否打印。

4. 某些行中的pr_dbg和dev_dbg是否打印。

5. 符合某种format的格式的打印。

可以利用以下步骤开启这个功能。

1. 修改.config文件

CONFIG_DYNAMIC_DEBUG=y

CONIFG_DEBUG_FS=y

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

http://lwn.net/Articles/434833/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息