linux 内核常用的debug

Linux内核就有这么一套机制,我们仅需调用一个接口,并根据接口的返回值来决定是否持续打印我们的信息。这个接口的内部会自动帮我们判断我们即将要打印的信息是否过于频繁。

复制代码
if(printk_ratelimit())
{
    printk(KERNEL_ERR "xxx driver broken!!!\n");
}

是的,就是这么简单。这个 printk_ratelimit() 函数是定义在 <linux/printk.h>上的。

这个函数的机理是会判断我们的打印的频率的,即它会限制这条打印在指定时间间隔内最多只能出现指定次数条。

这个限制条件是可以动态修改的,它们被定义在 /proc 目录下的两个文件中:

复制代码
/proc/sys/kernel/printk_ratelimit
/proc/sys/kernel/printk_ratelimit_burst

printk_ratelimit 表示时间间隔,printk_ratelimit_burst 表示频次间隔。默认情况下 printk_ratelimit 的值是 5 ,printk_ratelimit_burst 的值是 10。即指定的打印在每5秒的时间里最多只能打印10次。我们可以随时更改这两个文件的值来控制打印频率。

相关推荐
ζั͡山 ั͡有扶苏 ั͡✾几秒前
CentOS/RHEL LVM 磁盘扩展完整教程
linux·运维·centos
kfepiza4 分钟前
NetworkManager配置网桥(bridge)虚拟网络(vlan) 笔记250711
linux·tcp/ip·ubuntu
Fireworkitte14 分钟前
Linux 中替换sed
linux·运维·服务器
秃了也弱了。39 分钟前
两台电脑通过网线直连形成局域网,共享一台wifi网络实现上网
网络·电脑
dessler43 分钟前
Kafka-日常运维命令
linux·运维·kafka
小林C语言1 小时前
C语言 | 文件读写检测
c语言
誰能久伴不乏1 小时前
深入解析 TCP 连接状态与进程挂起、恢复与关闭
服务器·网络·tcp/ip
Dreamboat¿1 小时前
小皮面板搭建pikachu
运维·服务器·网络
c7_ln1 小时前
MYSQL C_API使用全解
c语言·数据库·mysql
Brookty2 小时前
【操作系统】线程
java·linux·服务器·后端·学习·java-ee·操作系统