通过打印调试(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 用于调试信息</