《驱动调试 - 调试信息打印到proc虚拟文件》

printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通过dmesg命令来查看log_buf[]

1.环形缓冲区log_buf[]又是存在内核的哪个文件呢?

位于/proc/kmsg里,所以除了dmesg命令查看,也可以使用cat /proc/kmsg来查看。

2.但是,dmesg命令和cat /proc/kmsg有所不同

2.1 dmesg命令

每次使用,都会打印出环形缓冲区的所有信息。

2.2 cat /proc/kmsg

只会打印出每次新的环形缓冲区的信息。

比如,第一次使用cat /proc/kmsg,会打印出内核启动的所有信息。

第二次使用cat /proc/kmsg,就不会出现之前打印的信息,只打印继上次使用cat /proc/kmsg之后的新的信息,比如下图所示:

 

3.接下来我们便进入内核,找/proc/kmsg文件在哪生成的

搜索"kmsg",找到位于fs\proc\proc_misc.c 文件的proc_misc_init()函数中,

 

posted @ 2019-10-21 16:10  一个不知道干嘛的小萌新  阅读(465)  评论(0编辑  收藏  举报