dumpsys命令用法

http://gityuan.com/2016/05/14/dumpsys-command/

dumpsys命令功能很强大,能dump系统服务的各种状态,非常有必要熟悉该命令的用法以及含义。

一、 dumpsys命令

1.1 服务列表

不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令: dumpsys -l 。 这些服务名或许你并看不出其调用的哪个服务,那么这时可以通过下面指令: service list 。

表一:

服务名类名功能
activityActivityManagerServiceAMS相关信息
packagePackageManagerServicePMS相关信息
windowWindowManagerServiceWMS相关信息
inputInputManagerServiceIMS相关信息
powerPowerManagerServicePMS相关信息
batterystatsBatterystatsService电池统计信息
batteryBatteryService电池信息
alarmAlarmManagerService闹钟信息
dropboxDropboxManagerService调试相关
procstatsProcessStatsService进程统计
cpuinfoCpuBinderCPU
meminfoMemBinder内存
gfxinfoGraphicsBinder图像
dbinfoDbBinder数据库

表二:

服务名功能 
SurfaceFlinger图像相关 
appopsapp使用情况 
permission权限 
processinfo进程服务 
batteryproperties电池相关 
audio查看声音信息 
netstats查看网络统计信息 
diskstats查看空间free状态 
jobscheduler查看任务计划 
wifiwifi信息 
diskstats 磁盘情况
usagestats用户使用情况 
devicestoragemonitor设备信息 
。。。。。。 

未完待续…

1.2 查询服务

通过下面命令可打印具体某一项服务: dumpsys <service> ,其中 便是前面表格中的服务名,比如:

 
  1. dumpsys cpuinfo //打印一段时间进程的CPU使用百分比排行榜

  2. dumpsys meminfo -h //查看dump内存的帮助信息

  3. dumpsys package <packagename> //查看指定包的信息

系统服务非常之多,那么接下来将重点说说其中之一: dumpsys activity 用法.

二、 Activity

 
  1. dumpsys activity [options] [cmd]

  2.  

下面分别说说options和cmd有哪些可选值

2.1 options

options可选值:

  • -a :dump所有;
  • -c :dump客户端;
  • -p [package] :dump指定的包名;
  • -h :输出帮助信息;

dumpsys activity 等价于依次输出下面7条指令:

 
  1. dumpsys activity intents

  2. dumpsys activity broadcasts

  3. dumpsys activity providers

  4. dumpsys activity services

  5. dumpsys activity recents

  6. dumpsys activity activities

  7. dumpsys activity processes

2.2 cmd

cmd可选值

cmd解释缩写
activitiesactivity状态a
broadcasts广播b
intentspending intent状态i
processes进程p
oom内存溢出o
servicesService状态s
serviceservice状态(Client端) 
providersContentProvider状态prov
providerContentProvider状态(Client端) 
associationstracked app associationsas
permissionsURI permission grant stateperm
packagepackage相关信息 
all所有的activities信息 
recentsrecent activity状态r
toptop activity信息 
write将状态持久化到存储区 
track-associations使能association tracking 
untrack-associations禁止和清空association tracking 
  • cmd:上表加粗项是指直接跟 包名 ,另外services和providers还可以跟 组件名 ;
  • 缩写:基本都是cmd首字母或者前几个字母,用cmd和缩写是等效: dumpsys activity broadcasts dumpsys activity b //等效

三、场景

下面以新浪微博App作为实例,由于输出结果较多,每个场景截图只挑选部分重要的信息。

场景1:查询某个App所有的Service状态

 
  1. dumpsys activity s com.sina.weibo

  2.  

解读:

  • Service类名为 com.morgoo.droidplugin.PluginManagerService ;
  • 运行在进程pid= 7220 ,进程名为 com.sina.weibo ,uid= 10094 ;
  • 通过bindService连接该服务的进程pid= 7306 ,进程名为 com.sina.weibo:PluginP03 。

当然还有packageName,baseDir(apk路径),dataDir(apk数据路径),createTime等各种信息。另外,新浪微博采用的是360开源的Android插件机制( com.morgoo.droidplugin ),主要用于hotfix等功能。

场景2:查询某个App所有的广播状态

 
  1. dumpsys activity s com.sina.weibo

  2.  

解读:

  • android.intent.action.SCREEN_ON代表手机亮屏广播;
  • 接收该广播的receiver有很多个,其中一个所在进程为pid= 7220 ,进程名为 com.sina.weibo

场景3:查询某个App所有的Activity状态

输出结果较多,尤其是 View Hierarchy ,下面截取部分:

 
  1. dumpsys activity a com.sina.weibo

  2.  

解读:

  • 格式:TaskRecord{Hashcode #TaskId Affinity UserId=0 Activity个数=1};所以上图信息解析后就是TaskId= 1802 ,Affinity= com.sina.weibo ,当前Task中Activity个数为1。
  • effectiveUid为当前task所属Uid,mCallingUid为调用者Uid=u0a94,mCallingPackage为调用者包名,这里是 com.sina.weibo ;
  • realActivity:task中的已启动的Activity组件名 com.sina.weibo/.SplashActivity 。

场景4:查询某个App的进程状态

 
  1. dumpsys activity p com.sina.weibo

  2.  

  • 格式:ProcessRecord{Hashcode pid:进程名/uid},进程pid=7306,进程名为 com.sina.weibo:PluginP03 ,uid=10094.
  • 该进程中还有Services,Connections, Providers, Receivers,可以看出该进程是没有Activity的进程。

其他

还有很多场景,会用到不同的参数,这里就不再一一列举,建议大家多去尝试,慢慢地就更加熟练,再比如:

 
  1. dumpsys activity top //当前界面app状态

  2. dumpsys activity oom //进程oom状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值