[日更-2019.4.1]Android用ADB 打印Linux内核调试信息命令dmesg和kmsg

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

声明

  • 最近调试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

[日更-2019.4.1]Android用ADB 打印Linux内核调试信息命令dmesg和kmsg_第1张图片

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

dmesg --help

[日更-2019.4.1]Android用ADB 打印Linux内核调试信息命令dmesg和kmsg_第2张图片

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

[日更-2019.4.1]Android用ADB 打印Linux内核调试信息命令dmesg和kmsg_第3张图片

转载于:https://my.oschina.net/XiaoMaPedro/blog/3029835

你可能感兴趣的:([日更-2019.4.1]Android用ADB 打印Linux内核调试信息命令dmesg和kmsg)