如何开启Linux内核中的debug打印信息
Linux 内核中,日志等级定义在 include/linux/kern_levels.h 文件中。数值越小等级越高。
级别
对应内核日志级别
说明
0
KERN_EMERG
紧急消息。系统崩溃之前提示,表示系统已不可用。
1
KERN_ALERT
报告消息。表示必须立即采取措施。
2
KERN_CRIT
临界消息。通常涉及严重的硬件或软件操作失败。
3
KERN_ERR
错误消息。串口日志的默认级别。驱动程序常用 KERN_ERR 来报告硬件的错误。
4
KERN_WARNING
警告消息。对可能出现问题的情况进行警告。
5
KERN_NOTICE
正常但又重要的消息。用于提醒,常用于与安全相关的消息。
6
KERN_INFO
提示消息。如驱动程序启动时,打印硬件消息。
7
KERN_DEBUG
调试消息。设置此级别会打印所有日志消息。
这四个数字依次对应 console_loglevel,default_message_loglevel,minimum_console_loglevel,default_console_loglevel。
console_loglevel:控制台使用的日志级别;
default_message_loglevel:调用 printk() 未指定日志级别时使用的日志级别;
minimum_console_loglevel:允许设置的控制台日志级别(console_loglevel)最小值;
default_console_loglevel:系统启动时使用的日志级别。
linux/include/linux/printk.h中59行
为什么是 8 呢,KERNEL_DEBUG 的值不是 7 么?因为控制台(console)只会显示大于所设置等级的信息。比如只显示 alert 和 emerg 级别的信息,那么 console_loglevel 应该设置为 2。同样的,想要显示 debug 信息,console_loglevel 应设置为**大于 7 **的值。
在需要的.c中#define DEBUG
就可以看到内核打印了