Linux内核调试方法总结之dumpsys

dumpsys

【用途】Android系统提供的dumpsys工具可以用来查看系统服务信息与状态。

【使用说明】

adb shell dumpsys <service> [<option>]

【常用服务解释】

编号

服务名称

功能

1

account

显示accounts信息

2

activity

显示所有的activities信息,包括activity栈,栈顶activity等

3

cpuinfo

显示CPU信息,系统各进程的CPU使用率

4

window

显示键盘、窗口和他们的关系。获取当前应用的component

5

wifi

显示wifi信息

7

package

获取安装包信息 package   $package_name

8

usagestats

每个界面的启动时间

9

statusbar

显示状态栏相关的信息

10

meminfo

显示内存信息。meminfo   $package_name or $pid显示指定程序内存信息

11

diskstats

显示磁盘相关信息

12

battery

显示电池信息

13

alarm

显示应用持锁情况,可用于分析系统无法待机的问题以及应用层死锁问题

14

input

显示InputReader和InputDispatcher消息队列,底层事件一般通过inputevent的方式上报,通过查看消息队列,可以判断冻屏时内核是否正常(adb shell setprop sys.input.debug 1打开debug信息)

【代码实现】

dumpsys代码在frameworks/base/cmds/dumpsys/dumpsys.cpp

所有dump信息都是由重载了Binder的dump函数的类来完成:

@Override

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

         //TODO: xxxx

}

所有dump信息都是由ServiceManager注册的services提供的,以meminfo为例:

frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数中注册meminfo服务:

         ServiceManager.addService(“activity”, m);

         ServiceManager.addService(“meminfo”,new MemBinder(m));

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

posted on 2016-04-23 14:33  者旨於陽  阅读(2607)  评论(0编辑  收藏  举报

导航