您的位置:首页 > 其它

dumpsys使用详解

2015-06-16 17:25 381 查看
Dumpsys结构图:

 


实现方式:

dumpsys的代码在mydroid/frameworks/base/cmds/dumpsys/dumpsys.cpp所有的dump信息都是由重载了Binder中的dump函数的类来完成:

        @Override

        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {

            ...

        }

代码很简单,发现所有dump的信息都是由defaultServiceManager)提供的由系统注册的所有service来提供信息。

以meminfo为例:

它是在

mydroid/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数处被注册的

               SrviceManager.addService("activity", m); 

               ServiceManager.addService("meminfo", new MemBinder(m));

               ...

MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(mydroid/frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo信息。

          这其中其实牵涉到负责的Android的是如何管理Linux的进程,同时又是如何把Linux的进程管理起来提供各种信息给Java层使用。

上述信息来自网络:

https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCEQFjAB&url=http%3A%2F%2Ffreshui-player.googlecode.com%2Fsvn%2Fbranches%2Fdocs%2Fandroid_tools%2FAndroid%25E7%25B3%25BB%25E7%25BB%259F%25E5%2588%2586%25E6%259E%2590%25E5%25B7%25A5%25E5%2585%25B7-dumpsys.doc&ei=XHftU5WaOIPn8AWsn4HADw&usg=AFQjCNHK3eJPxr5jB07Di96dlBqStTrtdg&bvm=bv.73231344,d.dGc

 

具体命令行参数:

1、 SurfaceFlinger

SurfaceFlinger是Android进行图形界面绘制的服务,根据文档显示,有硬件绘制和GPU绘制两种实现方式。

 


(来源:http://blog.csdn.net/windskier/article/details/7030732 )

 

通过dumpsys SurfaceFlinger,除了可以看到显示设备的一些参数开关之外,还能能到如下,360手机卫士主界面是硬件方式绘制的。

 


 

         另外,还能看到命令行运行时候,手机系统上所有layer信息,如下所示:

 


 

关于这部分主要参考:

http://www.linuxgraphics.cn/android/graphics_system.html

http://stackoverflow.com/questions/21642734/how-to-make-sense-of-dumpsys-surfaceflinger

http://blog.csdn.net/windskier/article/details/7030732

 

2、 Cpuinfo

可以显示每个进程在内核空间和用户空间的cpu占用率

 


 

3、 Account

设备上所有用户信息

 


 

4、  Activity

-h:显示参数列表

A(activities)参数:查看activity组件信息,主要看从”  Running activities (most recent first):”部分查看栈中的activity列表。

B(broadcasts)参数:查看所有注册的BraodcastReceiver及其filter、action等信息。

I(Intents)参数:等待的intent状态

P(processes)参数:ProcessRecord记录的进程id、进程名字和各种用于调节优先级的状态。

 


O(oom)参数:主要看oom_adj值,从中可以看到到内存释放的情况。

 


Prov(providers)参数:显示content providers信息

 


s(Services)参数:当前active状态的service及bindings信息。

 


services[]参数:跟上具体的服务名,dump出服务客户端的一些状态信息。

 

5、  Alarm

查看放到定时队列中的事件。

例如下面我们可以看到其intent ID。

 


而通过” dumpsys  activity i”我们可以看到该intent所对应的详细信息。

 


 

6、  appwidget

android窗口小部件的信息。

 


 

7、  audio

android音频组件信息

 


 

8、  backup

android backup服务信息

 


 

9、  battery

android电池设备信息

 


 

10、              batteryinfo

android耗电相关的进程运行时间等信息(Android L被batterystats取代)。

 

refer
to : http://blog.csdn.net/oujunli/article/details/37563067

看了一下比较关注的Google I/O视频,其中在Introduction to Project Volta里面有个battery historian的工具,看着比较有意思,用Nexus
5刷了个Android L preview的版本试试。

    使用battery historian步骤:

1、adb shell dumpsys batterystats --enable full-wake-history

2、adb shell dumpsys batterystats --reset

3、adb bugreport |tee bugreport.txt

4、python historian.py -a bugreport.txt | tee battery.html

用Chrome打开battery.html,可以看到:

 

11、              connectivity

android网络连接状态及进程请求网络信息。

 

12、              content

查看android content provider相关的信息

 

13、              device_policy

android设备政策。

 

14、              diskstats

手机卡剩余信息

 


15、              dropbox

系统崩溃的信息

 


16、              input_method

Android输入法信息

 


17、              iphonesubinfo

手机制式及设备id

 


18、              location

gps等位置信息

 


19、              media.audio_flinger、media.audio_policy、media.camera、media.player

android音视频设备有关的状态信息

 

20、              meminfo

android进程实际物理内存占用情况。

 


http://zarroboogs.org/index.php/archives/218

 

21、              mount

加载的存储设备信息


 

 

22、              network_management

android网络流量管理信息

 

23、              notification

android通知栏广告信息。

 


 

 

24、              package

参数:

 


我们主要通过l、perm、perf、p等参数dump出package信息,还能够直接跟包名来dump出该包的具体信息。

 

25、              power

电源管理器的一些状态信息。

 

26、              sensorservice

android传感器的一些状态信息。

 

27、              statusbar

显示状态栏相关的一些信息。

 

28、              telephony.registry

电话服务相关的信息。

 

29、              uimode

ui mode service的状态信息。

 


 

30、              usagestats

各个app使用情况统计

 


 

31、              wallpaper

壁纸信息

 

32、              wifi

wifi连接及状态信息

 


 

33、              window

参数:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: