• 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的信息。

  • 相关阅读:
    函数模板和类模板
    Dojo常用函数
    ☆☆☆Dojo中define和declare的结合使用
    Dojo的declare接口
    Dojo的define接口
    Dojo的on函数(以前的dojo.connect)
    Dojo中的选择器
    Dojo的ready函数:dojo.ready(以前的dojo.addOnLoad)
    Dojo的dojoConfig函数
    Dojo操作dom元素的样式
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/5424598.html
Copyright © 2020-2023  润新知