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/
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/
相关文章推荐
- [Quote] New subsystem iio in Linux Kernel.
- Setting shared (dynamic) library in Eclipse C++ in Linux
- Debug a NIC driver in linux(kernel version 2.4.20-8) which running on VMware workstation version 4.5.2
- 【转】Writing linux kernel code in Eclipse
- How to Install Nvidia Kernel Module Cuda and Pyrit in Kali Linux
- Debugging Maya Plugin(C++) with CodeBlocks in Linux
- 30 Linux Kernel Developers in 30 Weeks: Linus Torvalds
- Bridge in Linux Kernel——STP
- Linux Kernel Threads in Device Drivers
- Editing your DNS in Linux/CentOS | Dynamic Hosting Blog
- Init Call Mechanism in the Linux Kernel
- add a system call in linux kernel
- Feature: High Memory In The Linux Kernel
- Debugging the Linux Kernel with debugfs
- 30 Linux Kernel Developers in 30 Weeks: Thomas Gleixner
- 30 Linux Kernel Developers in 30 Weeks: Jean Delvare
- Enabling Stack Dumping in Linux Kernel
- 30 Linux Kernel Developers in 30 Weeks: Alan Cox
- Basic Data Structures and Algorithms in the Linux Kernel--reference
- High Memory in the Linux Kernel