内核编程调试技术(1)

本文介绍了Linux内核编程中的printk调试技术,包括不同日志级别的含义及其使用场景,如KERN_EMERG、KERN_ALERT等。printk函数会将消息写入循环缓冲区,klogd和syslogd负责将内核消息追加到日志文件。此外,还讨论了如何通过/proc/sys/kernel/printk控制日志级别,以及printk_ratelimit函数用于限制打印速率。最后提到了通过/proc文件系统、ioctl和sysfs导出驱动程序信息进行查询和调试的方法。
摘要由CSDN通过智能技术生成

通过打印调试(printk)

printk和printf不差别之一就是它通过日志级别,可以让printk根据消息的严重程度对消息进行分类

printk(KERN_DEBUG "here i am: %s:%i\n", __FILE__, __LINE__);

printk(KERN_CRIT "I'M TRASHED; giving up on %p\n", ptr);

在头文件<linux/kernel.h>中定义了八种可用的级别:

#define KERN_EMERG "<0>"      /* system is unusable   */
#define KERN_ALERT "<1>"       /* action must be taken immediately */
#define KERN_CRIT "<2>"          /* critical conditions   */
#define KERN_ERR "<3>"           /* error conditions   */
#define KERN_WARNING "<4>" /* warning conditions   */
#define KERN_NOTICE "<5>"    /* normal but significant condition */
#define KERN_INFO "<6>"          /* informational   */
#define KERN_DEBUG "<7>"    /* debug-level messages   */

KERN_EMERG     用于紧急事件消息,一般是系统崩溃之前的提示消息

KERN_ALERT       用于需要立即采取动作的情况

KERN_CRIT          临界状态,通常涉及严重的硬件或软件操作失败

KERN_ERR           用于报告错误状态,驱动程序常使用KERN_ERR来报告来自硬件的问题

KERN_WARNING 对可能出现问题的情况进行警告,但这类问题通常不会对系统造成严重的问题

KERN_NOTICE     有必要进行提示的正常情形。许多与安全相关的状况用这个级别进行汇报

KERN_INFO           提示性信息。很多驱动程序在启动的时候以这个级别来打印出它们找到的硬件信息

KERN_DEBUG      用于调试信息</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值