在对内核进行代码调试的时候,除了打开相应的内核开发配置选项之外,最普通也是最常用的调试就是打印出相关信息进行调试,对某些怀疑的变量进行监视,在用户空间下,我们最常用的方式是通过printf()函数来进行相关信息的输出,而在内核调试中,我们常用printk()函数来进行相关关键信息的输出,与printf()函数不同的地方是,printk()函数有消息输出优先级,即(loglevel),而这些loglevel是用相关的宏进行控制,例如:
printk(KERN_DEBUG "I am Senmashijie: %s:%i\n",__FILE__,__LINE__);
printk(KERN_CRIT "I am Senmashijie transhed;giving up on %p\n",ptr);
KERN_DEBUG 和 KERN_CRIT 就是消息输出优先级的宏,那么它们分别代表什么意思呢?
在<linux/kernel.h>中定义了8中可用的级别字符串,它们分别是:
KERN_EMERG
用于紧急事件消息,一般是系统在崩溃之前提示的消息。
KERN_ALERT
用于需要立即采取行动的动作。
KERN_CRIT
临界状态,通常涉及严重的硬件或软件操作失败。
KERN_ERR
用于报告错误状态。设备驱动程序会经常使用KERN_ERR来报告硬件的问题。
KERN_WARING
对可能的问题进行警告,通常这类信息不会对系统造成较为严重的问题。
KERN_NOTICE
必要提示,一般是安全相关的信息提示,使用KERN_NOTICE。
KERN_INFO
提示性信息。驱动程序在启动的时候会以这个级别打印出它们所找到的硬件信息。
KERN_DEBUG
用于调试信息。
上述8中字符串信息,以宏的形式展开后表示一个整数,整数值的范围:0~7,数值越小,优先级越高。
希望以上总结信息对大家有所帮助。
原文地址:https://www.cnblogs.com/Senchuangdianzi/p/12221815.html
时间: 2024-11-09 00:14:22