1.Android内核打印管理等级
在大家调试Linux内核时,想必会经常看到pr_err、pr_debug、pr_info 等打印函数,这些皆在kernel/msm-3.18/include/linux/printk.h 中定义。这里放上printk.h中部分节选。
这些想必看到都能懂,我们具体说下pr_debug这个打印如何使能,看到上面的截图可能许多人会问没看到pr_debug声明呀,别急,继续往下看
这里看到在pr_debug的声明上方有个宏的限制,也就是说我们要使能这个函数功能,就必须在你所调用的C文件中进行该宏DEBUG的定义
这里提供两个方式:
1.直接在当前C文件中定义。(简单粗暴)
2.在当前C文件同级目录下的Makefile中声明
以DMA为例,在drivers/dma/Makefile中定义了编译选项
ccflags-$(CONFIG_DMADEVICES_DEBUG) := -DDEBUG
其作用相当于在drivers/dma/所有子文件定义了宏#define DEBUG
当然,这个只是打开了宏的功能,确实能让pr_debug工作了,但是可能还会有小伙伴会说,为啥我这样做了还是看不到pr_debug的打印信息啊。当然这还是不够了,此时你需要了解内核还有一个打印级别,也就是说,你的打印级别高于这个默认级别才能看到。接下来看看这个等级是如何定义的。
kernel/msm-3.18/include/linux/printk.c
kernel/msm-3.18/include/linux/printk.h
再回到上面看pr_debug的打印级别是KERN_DEBUG,KERN_DEBUG是多少呢?
kernel/msm-3.18/include/linux/kern_levels.h
那这样一看是不是明白了,没错pr_debug打印级别不够,所以你看不到打印信息。
如何做?
1.定义DEBUG宏控制
2.调整内核打印等级,这里有两种方式。
第一种,开机后调整

第二种,直接修改默认值(将原先的7修改成8),重新编译烧写。
#define CONSOLE_LOGLEVEL_DEFAULT 8 /* anything MORE serious than KERN_DEBUG */
来源:CSDN
作者:wang 恒
链接:https://blog.csdn.net/qq_23327993/article/details/91874355