声明
- 最近调试Android Linux内核代码,必备命令是dmesg和cat /proc/kmsg
- 这两个命令分别如何使用呢?就在本文的内容
1 应用空间的Log和内和空间的Log
-
用户空间的Log很简单了,大家都知道有个logcat命令,logcat的使用可参考logcat命令介绍。
-
内核空间的Log所使用的命令为dmesg和cat /proc/kmsg
2 dmesg的使用
2.1 Android和Linux系统中的dmesg命令
查看Android 系统中dmesg的help信息:
dmesg --help
在Linux系统中同样有dmesg命令来查看内核Log信息:
dmesg --help
可以发现Linux系统中的dmesg功能更齐全,Android系统中的dmesg只是一个Linux系统中dmesg阉割版本
3 Android系统中使用cat /proc/kmsg打印内核Log
用cat /proc/kmsg命令打印出来的信息跟与dmesg 有不同, 第一次执行/proc/kmsg 打印到当前时间的所有内核信息,再次执行cat /proc/kmsg,不会再打印已经打印的信息,只打印上一次执行之后打印出来的新的信息。
4 环形结构日志
应用空间和内核空间的Log是以环形结构存储,如果不及时打印出日志,那么新存入的日志将会冲掉前面的日志。在使用dmesg打印内核Log时,会发现总是打印出环形结构从头到尾的所有Log,并不会同步更新新加入的log。而使用cat /proc/kmsg即可同步打印出内核当前的Log,这也是dmesg和cat /proc/kmsg的主要差异所在。