dumpsys概述
Android提供的dumpsys
工具可以用于查看手机中的应用程序和系统服务信息与状态,能够熟练使用dumpsys
工具以及对它的输出内容进行理解是Android开发人员的必备技能,使用它我们不仅能够对方便的获取一些当前的平台的一些信息,而且能够对Android性能优化、Bug分析与调试带来很大的帮助。
手机连接电脑后可以直接命令行执行adb shell dumpsy
查看所有支持的Service
,但是这样输出的太多,可以通过adb shell dumpsys -l
或者 dumpsys | grep "DUMP OF SERVICE"
仅显示主要的Service
的信息。adb shell dumpsys -h
可以查看帮助信息。
关于这个命令的使用方法在这里做一下记录,以备使用。
关于adb shell dumpsy
命令的源码分析请参考我的博客Android 深入理解 dumpsys 。
dumpsys支持的所有命令
输入:
1 | adb shell dumpsys -l |
可以查看当前支持的所有系统服务列表:
1 | DockObserver |
输入 adb shell dumpsys
命令可以输出所有的系统服务信息。
具体命令如何查看帮助
从上面可以看出可以查看的Service
非常多,adb shell dumpsys -l
所列举的服务都可以直接通过 dumpsys + <service>
查看相关信息,具体每一个如何使用有一种通用的查看帮助的办法。
查看每一个命令的使用帮助,以下以activity
为例演示:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23$ adb shell dumpsys activity -h
Activity manager dump options:
[-a] [-c] [-h] [cmd] ...
cmd may be one of:
a[ctivities]: activity stack state
b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
i[ntents] [PACKAGE_NAME]: pending intent state
p[rocesses] [PACKAGE_NAME]: process state
o[om]: out of memory management
prov[iders] [COMP_SPEC ...]: content provider state
provider [COMP_SPEC]: provider client-side state
s[ervices] [COMP_SPEC ...]: service state
service [COMP_SPEC]: service client-side state
package [PACKAGE_NAME]: all state related to given package
all: dump all activities
top: dump the top activity
cmd may also be a COMP_SPEC to dump activities.
COMP_SPEC may be a component name (com.foo/.myApp),
a partial substring in a component name, a
hex object identifier.
-a: include all available server state.
-c: include client state.
这样就可以清楚每个命名的使用方法以及对应输出内容的信息查看方法。
以window
为例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59$ adb shell dumpsys window -h
Window manager dump options:
[-a] [-h] [cmd] ...
cmd may be one of:
i[input]: input subsystem state
p[policy]: policy state
s[essions]: active sessions
surfaces: active surfaces (debugging enabled only)
d[isplays]: active display contents
t[okens]: token list
w[indows]: window list
cmd may also be a NAME to dump windows. NAME may
be a partial substring in a window name, a
Window hex object identifier, or
"all" for all windows, or
"visible" for the visible windows.
-a: include all available server state.
-d list list the all of debug zones
-d enable <zone zone ...> enable the debug zone
-d disable <zone zone ...> disable the debug zone
zone usage :
0 : DEBUG
1 : DEBUG_FOCUS
2 : DEBUG_ANIM
3 : DEBUG_LAYOUT
4 : DEBUG_RESIZE
5 : DEBUG_LAYERS
6 : DEBUG_INPUT
7 : DEBUG_INPUT_METHOD
8 : DEBUG_VISIBILITY
9 : DEBUG_WINDOW_MOVEMENT
10 : DEBUG_ORIENTATION
11 : DEBUG_CONFIGURATION
12 : DEBUG_APP_TRANSITIONS
13 : DEBUG_STARTING_WINDOW
14 : DEBUG_REORDER
15 : DEBUG_WALLPAPER
16 : DEBUG_WALLPAPER_LIGHT
17 : SHOW_TRANSCATIONS
18 : HIDE_STACK_CRAWLS
19 : PROFILE_ORIENTATION
20 : DEBUG_TASK_MOVEMENT
21 : DEBUG_ADD_REMOVE
22 : DEBUG_TOKEN_MOVEMENT
23 : DEBUG_APP_ORIENTATION
24 : DEBUG_DRAG
25 : DEBUG_SCREEN_ON
26 : DEBUG_SCREENSHOT
27 : DEBUG_BOOT
28 : SHOW_SURFACE_ALLOC
29 : SHOW_LIGHT_TRANSACTIONS
30 : DEBUG_LAYOUT_REPEATS
31 : DEBUG_SURFACE_TRACE
32 : DEBUG_WINDOW_TRACE
33 : DEBUG_WINDOW
34 : DEBUG_STACK
35 : DEBUG_DIM_LAYER
36 : DEBUG_KEYGUARD
比如adb shell dumpsys window -d enable 10
就是打开DEBUG_ORIENTATION
,这样就把代码中的关于屏幕方向旋转相关的Log打印出来。
一些常用命令解释
adb shell dumpsys meminfo
adb shell dumpsys meminfo
可以查看所有进程的状态以及内存使用情况。
1 | Total PSS by process: |
meminfo $package_name or $pid
使用程序的包名或者进程id显示内存信息比如浏览器:adb shell dumpsys meminfo com.android.browser
adb shell dumpsys activity
用来显示ams的一些信息,包括任务栈,activity信息,进程信息等。
- adb shell dumpsys activity -h:帮助
- adb shell dumpsys activity <包名>:查看给定包名的activity信息,包括 View Hierarchy 等
- adb shell dumpsys activity top:查看当前应用的 activity 信息
- adb shell dumpsys activity a[ctivities]:只查看activity栈
- adb shell dumpsys activity r[recents]:最近任务activity状态
- adb shell dumpsys activity package <包名>:查看该进程的所有信息,包括:
dumpsys activity settings
,dumpsys activity allowed-associations
,dumpsys activity intents
,dumpsys activity broadcasts
,dumpsys activity broadcast-stats
,dumpsys activity providers
,dumpsys activity services
,dumpsys activity recents
,dumpsys activity lastanr
,dumpsys activity starter
,dumpsys activity activities
,dumpsys activity exit-info
,dumpsys activity processes
,dumpsys activity users
等信息内容 - adb shell dumpsys activity p[rocesses] <包名>:查看该包名的进程状态,包括进程间依赖等
所有上面的命令还可以添加下面的参数来定制输出结果:
WHAT may also be a COMP_SPEC to dump activities.
COMP_SPEC may be a component name (com.foo/.myApp),
a partial substring in a component name, a
hex object identifier.
-a: include all available server state.
-c: include client state.
-p: limit output to given package.
–checkin: output checkin format, resetting data.
–C: output checkin format, not resetting data.
–proto: output dump in protocol buffer format.
–autofill: dump just the autofill-related state of an activity
其他
- adb shell dumpsys SurfaceFlinger: 查看UI绘制的各个层级信息
- adb shell dumpsys window: 显示键盘,窗口和它们的关系
- adb shell dumpsys package <包名>: 查看该包的具体信息
- adb shell dumpsys statusbar: 显示状态栏相关信息
- adb shell dumpsys usagestats: 每个应用的启动次数和时间
- adb shell dumpsys battery: 电池信息
- adb shell dumpsys diskstats: 磁盘相关信息
- adb shell dumpsys alarm: 显示Alarm信息
- adb shell dumpsys wifi: 显示wifi信息
- adb shell dumpsys user:查看当前的用户情况
- adb shell dumpsys dbinfo <包名>:查看指定包名应用的数据库存储信息(包括存储的SQL语句)
- adb shell dumpsys settings:可以查看settingsProvider里面的所有设置项以及最近修改过的设置项。用这个命令来查看设置中的设置项的字段名称非常快捷,设置中修改一下然后执行命令。或者对比一下两次的操作结果。
- adb shell dumpsys notification: 查看通知的信息
参考资料
http://www.open-open.com/lib/view/open1405061994872.html
https://source.android.com/devices/tech/input/dumpsys.html