dumpsys使用详解

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耗电相关的进程运行时间等信息(可能api level 19以上被batterystats取代)。

 

 

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

参数:

 

你可能感兴趣的:(dumpsys使用详解)