第9章 嵌入式Linux 的调试技术
打印内核调试信息:printk
printk函数的用法和printf 函数类似,只不过printk函数运行在内核空间, printf函数运行在用户空间。也就是说,像Linux 驱动这样的linux肉核程序只能使用printk函数输出调试信息。
printk 函数的原型:
asmlinkage int printk(const char * fmt, ... )
第1个参数表示格式字符串,后面是可变参数。也就是说,旦printk 函数至少要有1个参数〔格式字符串),如果格式字符串中包含在占位符(%d、%s 等), 后面必须跟与占位符相等数量的参数,以便一一对应传入printk 函数
#define KERN_EMERG “<0 >'’ 紧急事件,-般是系统崩溃前显示的信息
#define 阻RN ALERT “<1>" 必须立即处理的行为
#define KERN_CRIT “<2>” 商界状态,通常涉及严重的硬件或软件操作失败
#define KERN ERR ”<3>” 用于报告错误状态,设备驱动程序会经常使用KERN_ERS报告来自硬件的问题
#define KERN_WARNING “<4>” 对可能出现问题的情况进行警告,这里类问娼通常不会对系统造成严重的影响
#define KERN NOTICE “<5>" 有必要进行提示的正常情况,许多与安全相关的情况用这个级别进行汇报
#define KERN INFO “<6>" 内核提示位信怠,很多驱动程序在启动时,以这个级别打印出找到的硬件信怠
#define KERN DEBUG “<7>”用于调试信息、
这4 个数字的含义如下。
6 : 将消息输出到控制台的级别。只有高于该级别的输出信息才会输出到控制台。
4 :默认的消息日志级别。如果不在printk 函数中指定日志级别,就会使用该值作为默认的级别。
1 :控制台日志级别可被设置的最小值〈最高优先级别〉。
7 : 控制台日志级别的默认值.
防止printk函数降低linux驱动性能
利用C 语言中的编译指令(#iif、#else 、#endif ,防止printk函数降低linux驱动性能。
查看/proc/meminfo 文件的内容。
#cat/proc/meminfo
http://i.cnblogs.com/EditPosts.aspx?opt=1