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

半腔热情 提交于 2019-12-01 19:21:28

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()函数中,

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!