Android用ADB 打印Linux内核调试信息命令dmesg和kmsg

声明

  • 最近调试Android Linux内核代码,必备命令是dmesg和cat /proc/kmsg
  • 这两个命令分别如何使用呢?就在本文的内容

1 应用空间的Log和内和空间的Log

  1. 用户空间的Log很简单了,大家都知道有个logcat命令,logcat的使用可参考logcat命令介绍

  2. 内核空间的Log所使用的命令为dmesg和cat /proc/kmsg

2 dmesg的使用

2.1 Android和Linux系统中的dmesg命令

查看Android 系统中dmesg的help信息:

dmesg --help

Android 系统中的dmesg

在Linux系统中同样有dmesg命令来查看内核Log信息:

dmesg --help

Linux系统中的dmesg

可以发现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的主要差异所在。

日志环形结构

发布了48 篇原创文章 · 获赞 5 · 访问量 7816

猜你喜欢

转载自blog.csdn.net/Xiaoma_Pedro/article/details/88970088