dumpsys命令用法_dumpsys service列表_Android系统攻城狮的博客-程序员秘密

技术标签: Linux高效命令  


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

一、 dumpsys命令

1.1 服务列表

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

表一:

服务名 类名 功能
activity ActivityManagerService AMS相关信息
package PackageManagerService PMS相关信息
window WindowManagerService WMS相关信息
input InputManagerService IMS相关信息
power PowerManagerService PMS相关信息
batterystats BatterystatsService 电池统计信息
battery BatteryService 电池信息
alarm AlarmManagerService 闹钟信息
dropbox DropboxManagerService 调试相关
procstats ProcessStatsService 进程统计
cpuinfo CpuBinder CPU
meminfo MemBinder 内存
gfxinfo GraphicsBinder 图像
dbinfo DbBinder 数据库

表二:

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

未完待续…

1.2 查询服务

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

dumpsys cpuinfo //打印一段时间进程的CPU使用百分比排行榜
dumpsys meminfo -h  //查看dump内存的帮助信息
dumpsys package <packagename> //查看指定包的信息

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

二、 Activity

dumpsys activity [options] [cmd]

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

2.1 options

options可选值:

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

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

dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity services
dumpsys activity recents
dumpsys activity activities
dumpsys activity processes

2.2 cmd

cmd可选值

cmd 解释 缩写
activities activity状态 a
broadcasts 广播 b
intents pending intent状态 i
processes 进程 p
oom 内存溢出 o
services Service状态 s
service service状态(Client端)
providers ContentProvider状态 prov
provider ContentProvider状态(Client端)
associations tracked app associations as
permissions URI permission grant state perm
package package相关信息
all 所有的activities信息
recents recent activity状态 r
top top 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状态

dumpsys activity s com.sina.weibo

dumpsys_service

解读:

  • 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所有的广播状态

 dumpsys activity s com.sina.weibo

dumpsys_broadcast

解读:

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

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

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

dumpsys activity a com.sina.weibo

dumpsys_activity_task

解读:

  • 格式: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的进程状态

dumpsys activity p com.sina.weibo

dumpsys_processes

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

其他

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

dumpsys activity top //当前界面app状态
dumpsys activity oom //进程oom状态


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010164190/article/details/51567652

智能推荐

Java Semaphore_Ricky_Fung的博客-程序员秘密

Semaphore简介Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。 线程可以通过release()来释放它所持有的信号量许可。Semaphore的函数列表

React+Redux+Ant Design+TypeScript 电子商务实战-客户端应用 01 基础配置_皮蛋很白的博客-程序员秘密

页面预览该实战项目是(不怎么严谨的)电子商务网站。首页商品列表页面登录页面注册页面购物车列表支付完成页面Dashboard 页面普通用户页面购买历史页面资料更新页面管理员页面创建分类页面创建商品页面订单列表页面显示所有用户的订单客户端技术栈介绍脚本:TypeScript前端框架:React路由管理:react-router-dom用户界面:Ant Design全局状态管理:Redux一部状态更新:redux-saga路由状态同步:co

毫秒必争,前端网页性能最佳实践_yuwenlin_neting的博客-程序员秘密

原文地址:http://www.cnblogs.com/developersupport/p/webpage-performance-best-practices.html你愿意为打开一个网页等待多长时间?我一秒也不愿意等。但是事实上大多数网站在响应速度方面都让人失望。现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性能的最佳实践,以及相应的

tensorflow 之 mnist_mnist 最大值_看不见我呀的博客-程序员秘密

目录需要注意的细节:1.绘制多幅图像,很好的一种思路:2.求最大值3.关于维度的问题4.求准确率的方法5.10分类的最大损失值6.初始值不合适,直接发散。见下图7.全部代码7.1加载数据7.1.1可视化数据7.1.2预处理数据7.2建立模型7.2.1训练前的测试7.2.2训练模型7.2.3训练后的测试7.2.4准确率计算需要注意的...

zabbix3.2.6安装_weixin_33851604的博客-程序员秘密

zabbix的安装方式有很多,这次用个比较简单的,通过阿里云进行安装。我的环境是centos7.3 1.3.10.0-514.26.2.el7.x86_641.由于默认安装的PHP是 5.4,漏洞较多,所以先把PHP5.6 安装上,安装连接http://adamcrab.blog.51cto.com/842470/19465162.使用阿里yum源[[email protected]...

如何使用Heap Analyzer生成和分析IBM Java Heapdump?_ibm heap analyzer_neu_lcj77的博客-程序员秘密

IBM Java 和 Sun Java支持的第三方工具不太一样,在AIX 服务器上只能安装IBM JAVA,那么当我们运行的Java程序出现可疑的内存泄漏,该如何诊断呢?一、什么是heapdump   HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析。二、如何生成Heapdump:    1. 设置参数      

随便推点

使用Python,OpenCV对图像进行亚像素点检测,并拟合椭圆进行绘制_python亚像素_程序媛一枚~的博客-程序员秘密

这篇博客将介绍如何使用Python,OpenCV对图像进行亚像素检测,并对亚像素点进行椭圆拟合绘制。

实现videojs接入m3u8视频,踩了多少坑啊_video标签支持m3u8吗_寒潮_C的博客-程序员秘密

我们最常见的mp4类型的视频,直接通过vue原生的video引入就可以了。但是当接入的视频是直播视频流时,video是不支持的,所以我们需要通过一定的插件辅助,在实现功能前先介绍几个概念。

jsDOM用法讲解_耐耐~的博客-程序员秘密

1.HTML DOM(文档对象模型)当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)HTML DOM模型被构造为对象的树HTML DOM树通过这个对象模型,javascript获得了足够的能力来创建动态的HTMLJavaScript能够改变页面中的所有HTML元素JavaScript能够改变页面中的所有HTML

BZOJ 1012 最大数maxnumber_最大数 bzoj012_gungnir__的博客-程序员秘密

【题目链接】http://www.lydsy.com/JudgeOnline/problem.php?id=1012【解题报告】 水题,可以解决的算法很多,不过第一眼看上去会倾向于线段树解决,思路更自然,不过如果用单调栈维护的话显然代码更短更不容易出错,所以就写了一下。 单调栈用来维护什么呢?我们要知道要查找后l个数中的最大值,那么当我们在栈中维护一个单调递减数列时,可以保证在数列中取

【转载】 判断质数/素数——我知道的最快的方法_判断素数最快的方法_YLD10的博客-程序员秘密

转载自:https://blog.csdn.net/songyunli1111/article/details/78690447标准版:大部分人都知道的比较快的方法:判断从 2 到 sqrt(n) 是否存在其约数,时间复杂度 O(sqrt(n))高配版:判断 2 之后,就可以判断从 3 到 sqrt(n) 之间的奇数了,无需再判断之间的偶数,时间复杂度 O(sqrt(n)/2)尊享版:...

嵌入式培训学哪些?嵌入式软件开发入门教程_嵌入式软件培训_长沙千锋的博客-程序员秘密

嵌入式软件,就是运行在嵌入式系统上的软件,而不是运行在通用PC上。嵌入式系统一般用在专用设备上。像手机、可穿戴设备、数字相机、机顶盒、游戏机、智能玩具、数控设备或仪表、汽车电子、医疗仪器、航天航空设备等都是典型的嵌入式系统。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体...

推荐文章

热门文章

相关标签