前一段时间学了一下,printk()打印语句,现在用起来又忘了,看了一下前一段时间做的笔记,不是很详细,所以决定再写一下和printk相关的调试的东西。算是复习一下吧。
首先,先熟悉一下printk函数,这个函数和printf函数很类似。只不过一个运行在用户态,一个运行在内核态。此外还是要熟悉一下终端,和控制台等几个概念
首先需要说的是可以通过以下几种途径查看printk()函数的打印信息
1、直接在终端中使用dmesg命令来查看 这个我自己试了一下这个里面所有级别消息的都能看见
2、查看/var/log/messages 这个里面除了最后一个级别的其他级别的都能看见,7应该就是控制台级别。
3、查看/proc/kmsg 这个试了一下,打不开呀,不知道为什么
1、printk及控制台的日志级别
Printk是在内核中运行的像控制台输出显示的函数。内核会先在内核空间中分配一静态缓冲区,作为显示用的空间,然后调用sprintf,格式换显示字符串,最后调用tty_write函数向终端打印信息。
#define KERN_EMERG 0/*紧急事件消息,系统崩溃之前提示,表示系统不可用*/
#define KERN_ALERT 1/*报告消息,表示必须立即采取措施*/
#define KERN_CRIT 2/*临界条件,通常涉及严重的硬件或软件操作失败*/
#define KERN_ERR 3/*错误条件,驱动程序常用KERN_ERR来报告硬件的错误*/