动态输出可以动态选择打开某个内核子系统的输出,可以有选择性地打开某些模块的输出。
配置内核编译选项要使用动态输出,必须在配置内核时打开CONFIG_DYNAMIC_DEBUG宏。内核代码里使用大量pr_debug()/dev_dbg()函数来输出信息,这些就使用了动态输出。
需要打开的内核配置选项:
CONFIG_DEBUG_FS=yCONFIG_DYNAMIC_DEBUG=y
CONFIG_DYNAMIC_DEBUG是配置动态输出,它依赖于CONFIG_DEBUG_FS,而CONFIG_DEBUG_FS是debugfs文件系统。
打开内核配置后,我们还需要挂载debugfs文件系统。
debugfs文件系统挂载动态输出在debugfs文件系统中有一个control文件节点,这个文件节点记录了系统中所有使用动态输出技术的文件名路径、输出所在的行号、模块名字和要输出的语句。
debugfs默认会挂载到/sys/kernel/debug,如果没有挂载,可以执行以下命令挂载:
mount -t debugfs none /sys/kernel/debug/
挂载debugfs文件系统后,可以查看control节点内容:
cat /sys/kernel/debug/dynamic_debug/control
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
内核
+关注
关注
3文章
1309浏览量
39846 -
Linux
+关注
关注
87文章
10991浏览量
206736 -
子系统
+关注
关注
0文章
100浏览量
12264
发布评论请先 登录
相关推荐
Linux内核学习笔记:printk调试
很多内核开发者喜欢的调试工具是printk,在Linux内核中,使用printk()函数来打印信息,它与C库的printf()函数类似。
发表于 06-01 15:14
•636次阅读
嵌入式开发为什么需要输出调试信息?
嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。 嵌入式开发输出调试信息主要有以下
发表于 11-28 16:46
如何配置和使用Linux内核printk功能
了解如何配置和使用Linux内核printk功能,包括其动态调试功能。
这样可以选择性地打印调试消息,而无需重新编译
你知道Linux内核调试关键技术之一的printk?
在内核调试技术之中,最简单的就是printk的使用了,它的用法和C语言应用程序中的printf使用类似,在应用程序中依靠的是stdio.h中的库,而在linux内核中没有这个库,所以在
发表于 05-10 11:18
•1598次阅读
使用动态输出打印内核的DEBUG信息
printk()是很多嵌入式开发者喜欢用的调试手段之一,但是,使用printk()每次都要重新编译内核,很不方便。使用动态输出在不需要重新编译内核
Linux内核基础:动态输出使用
动态输出使用 打开svcsock.c文件中所有的动态输出语句 # echo 'file svcsock.c +p' > /sys/ kernel /debug/ dynamic_deb
评论