dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。您可以使用 Android 调试桥 (ADB) 从命令行调用 dumpsys,获取在连接的设备上运行的所有系统服务的诊断输出。此输出通常比您想要的更详细,因此您可以使用下文所述的命令行选项仅获取您感兴趣的系统服务的输出。
使用 dumpsys 的一般语法如下:
dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h] |
要获取所连接设备的所有系统服务的诊断输出,只需运行 adb shell dumpsys。不过,这样输出的信息比您通常想要的信息多得多。要使输出更加可控,您可以通过在命令中添加相应服务来指定要检查的服务。
如需查看可与 dumpsys 配合使用的系统服务的完整列表,请使用以下命令:
dumpsys -l |
命令行选项
下表列出了使用 dumpsys 时的可用选项。
选项 | 说明 |
-t timeout | 指定超时期限(秒)。如果未指定,默认值为 10 秒。 |
--help | 输出 dumpsys 工具的帮助文本。 |
-l | 输出可与 dumpsys 配合使用的系统服务的完整列表。 |
--skip services | 指定您不希望包含在输出中的 services。 |
service [arguments] | 指定您希望输出的 service。某些服务可能允许您传递可选 arguments。您可以通过将 -h 选项与服务名称一起传递来了解这些可选参数,如下所示: dumpsys procstats -h |
-c | 指定某些服务时,附加此选项能以计算机可读的格式输出数据。 |
-h | 对于某些服务,附加此选项可查看该服务的帮助文本和其他选项。 |
问题背景:设备待机时,执行待机程序,但是执行中待机流程却没有走完,系统并没有恢复,这说明,有程序获取到待机锁没有释放,导致待机流程卡在等待锁释放的过程中。
以上问题可以用dumpsys power命令查看PowerManagerService的状态,并且可以找到待机锁的状态
dumpsys power
POWER MANAGER (dumpsys power)
……
Wake Locks: size=0
PARTIAL_WAKE_LOCK 'AudioMix' ACQ=-436ms (uid=1041 ws=WorkSource{1000})
Suspend Blockers: size=4
PowerManagerService.WakeLocks: ref count=0
PowerManagerService.Display: ref count=1
PowerManagerService.Broadcasts: ref count=0
PowerManagerService.WirelessChargerDetector: ref count=0
……
以上信息就可以找到,具体哪个模块获取了待机锁,让后进行排查
其他常用信息
dumpsys input | 检查输入诊断信息 |
dumpsys netstats | 检查网络诊断信息 |
dumpsys procstats --hours 3 | 要获取过去三小时内应用的内存占用情况统计信息 |
dumpsys meminfo package_name|pid [-d] | -d 标记会输出更多与 Dalvik 和 ART 内存占用情况相关的信息。 输出列出了应用当前的所有分配,以千字节为单位。 |
参考文档: