Add command to view log and cpuinfo

mz-dev
Zhuang Ma 8 years ago
parent a721aa7cc4
commit c699edff6c
  1. 237
      README.md

@ -47,8 +47,13 @@ ADB,即 [Android Debug Bridge](https://developer.android.com/studio/command-li
* [点亮/熄灭屏幕](#点亮熄灭屏幕)
* [滑动解锁](#滑动解锁)
* [输入文本](#输入文本)
* [调试](#调试)
* [查看/过滤日志](#查看过滤日志)
* [查看日志](#查看日志)
* [Android 日志](#android-日志)
* [按级别过滤日志](#按级别过滤日志)
* [按 tag 和级别过滤日志](#按-tag-和级别过滤日志)
* [日志格式](#日志格式)
* [清空日志](#清空日志)
* [内核日志](#内核日志)
* [查看设备信息](#查看设备信息)
* [型号](#型号)
* [电池状况](#电池状况)
@ -59,6 +64,7 @@ ADB,即 [Android Debug Bridge](https://developer.android.com/studio/command-li
* [IMEI](#imei)
* [Android 系统版本](#android-系统版本)
* [Mac 地址](#mac-地址)
* [CPU 信息](#cpu-信息)
* [更多硬件与系统属性](#更多硬件与系统属性)
* [实用功能](#实用功能)
* [屏幕截图](#屏幕截图)
@ -798,11 +804,193 @@ adb shell input text hello
现在 `hello` 出现在文本框了。
## 调试
## 查看日志
### 查看/过滤日志
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。
// TODO
### Android 日志
命令格式:
```sh
[adb] logcat [<option>] ... [<filter-spec>] ...
```
常用用法列举如下:
#### 按级别过滤日志
Android 的日志分为如下几个级别:
* V —— Verbose(最低,输出得最多)
* D —— Debug
* I —— Info
* W —— Warning
* E —— Error
* F —— Fatal
* S —— Silent(最高,啥也不输出)
按某级别过滤日志则会将该级别及以上的日志输出。
比如,命令:
```sh
adb logcat *:W
```
会将 Warning、Error、Fatal 和 Silent 日志输出。
#### 按 tag 和级别过滤日志
比如,命令:
```sh
adb logcat ActivityManager:I MyApp:D *:S
```
表示输出 tag `ActivityManager` 的 Info 以上级别日志,输出 tag `MyApp` 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。
#### 日志格式
可以 `adb logcat -v <format>` 选项指定日志输出格式。
日志支持按以下几种 `<format>`
* brief
默认格式。格式为:
```sh
<priority>/<tag>(<pid>): <message>
```
示例:
```sh
D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
```
* process
格式为:
```sh
<priority>(<pid>) <message>
```
示例:
```sh
D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)
```
* tag
格式为:
```sh
<priority>/<tag>: <message>
```
示例:
```sh
D/HeadsetStateMachine: Disconnected process message: 10, size: 0
```
* raw
格式为:
```sh
<message>
```
示例:
```sh
Disconnected process message: 10, size: 0
```
* time
格式为:
```sh
<datetime> <priority>/<tag>(<pid>): <message>
```
示例:
```sh
08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
```
* threadtime
格式为:
```sh
<datetime> <pid> <tid> <priority> <tag>: <message>
```
示例:
```sh
08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
```
* long
格式为:
```sh
[ <datetime> <pid>:<tid> <priority>/<tag> ]
<message>
```
示例:
```sh
[ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ]
Disconnected process message: 10, size: 0
```
指定格式可与上面的过滤同时使用。比如:
```sh
adb logcat -v long ActivityManager:I *:S
```
#### 清空日志
```sh
adb logcat -c
```
### 内核日志
命令:
```sh
adb shell dmesg
```
输出示例:
```sh
<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
<6>[14201.753642] PM: resume of devices complete after 68.106 msecs
<4>[14201.755954] Restarting tasks ... done.
<6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
<6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
<6>[14201.872498] PM: Syncing filesystems ... done.
```
中括号里的 `[14201.684016]` 代表内核开始启动后的时间,单位为秒。
通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 `Freeing init memory` 那一行前面的时间就是。
## 查看设备信息
@ -979,6 +1167,44 @@ adb shell cat /sys/class/net/wlan0/address
f8:a9:d0:17:42:4d
```
### CPU 信息
命令:
```sh
adb shell cat /proc/cpuinfo
```
输出示例:
```sh
Processor : ARMv7 Processor rev 0 (v7l)
processor : 0
BogoMIPS : 38.40
processor : 1
BogoMIPS : 38.40
processor : 2
BogoMIPS : 38.40
processor : 3
BogoMIPS : 38.40
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x51
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x06f
CPU revision : 0
Hardware : Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
Revision : 000b
Serial : 0000000000000000
```
这是 Nexus 5 的 CPU 信息,我们从输出里可以看到使用的硬件是 `Qualcomm MSM 8974`,processor 的编号是 0 到 3,所以它是四核的,采用的架构是 `ARMv7 Processor rev 0 (v71)`
### 更多硬件与系统属性
设备的更多硬件与系统属性可以通过如下命令查看:
@ -1263,3 +1489,4 @@ Android 系统是基于 Linux 内核的,所以 Linux 里的很多命令在 And
* [Android ADB命令大全](http://zmywly8866.github.io/2015/01/24/all-adb-command.html)
* [adb 命令行的使用记录](https://github.com/ZQiang94/StudyRecords/blob/master/other/src/main/java/com/other/adb%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%9A%84%E4%BD%BF%E7%94%A8%E8%AE%B0%E5%BD%95.md)
* [Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)](http://www.jianshu.com/p/860bc2bf1a6a)
* [那些做Android开发必须知道的ADB命令](http://yifeiyuan.me/2016/06/30/ADB%E5%91%BD%E4%BB%A4%E6%95%B4%E7%90%86/)

Loading…
Cancel
Save