linux驱动中printk的使用注意事项

本文介绍了Linux系统中如何调整printk调试信息的输出级别,确保特定级别的信息能在控制台显示。通过修改控制台日志级别,即便是默认不显示的信息也能被捕获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在按键驱动中增加printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出信息


在kernel/

/* We show everything that is MORE important than this.. */
#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Minimum loglevel we let people use */
#define DEFAULT_CONSOLE_LOGLEVEL 7 /* anything MORE serious than KERN_DEBUG */

int console_printk[4] = {
       DEFAULT_CONSOLE_LOGLEVEL,    /* console_loglevel */
       DEFAULT_MESSAGE_LOGLEVEL,    /* default_message_loglevel */
       MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */
       DEFAULT_CONSOLE_LOGLEVEL,    /* default_console_loglevel */
};


下面是控制台日志级别的一些简要的介绍
 控制台相应的日志级别定义如下:
 #define MINIMUM_CONSOLE_LOGLEVEL  1   /*可以使用的最小日志级别*/
 #define DEFAULT_CONSOLE_LOGLEVEL  7 /*比KERN_DEBUG 更重要的消息都被打印*/


int console_printk[4] = {
 DEFAULT_CONSOLE_LOGLEVEL,/*控制台日志级别,优先级高于该值的消息将在控制台显示*/
 /*默认消息日志级别,printk没定义优先级时,打印这个优先级以上的消息*/
 DEFAULT_MESSAGE_LOGLEVEL,
 /*最小控制台日志级别,控制台日志级别可被设置的最小值(最高优先级)*/
 MINIMUM_CONSOLE_LOGLEVEL,
 DEFAULT_CONSOLE_LOGLEVEL,/* 默认的控制台日志级别*/
 };

 在进行查看的时候,可以使用命令 cat /proc/sys/kernel/printk来查看这四个值
6   6   1  7
可知我们系统默认控制台级别为第1个6,而我们要输出的信息级别是KERN_INFO(刚好是6),如果要输出这个信息,需要把第1个6改为7,修改命令:
echo “7 6 1 7” > /proc/sys/kernel/printk
或者是把上面printk(KERN_INFO "gpio_keys_gpio_isr()\n");改为KERN_ERR或是其他比他高级别的也可以。

但是在没有改打印机级别,通过cat /proc/kmsg也可以抓调试信息也可以抓到这个信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值