`
jgsj
  • 浏览: 966184 次
文章分类
社区版块
存档分类
最新评论

Android dumpsys工具分析

 
阅读更多

dumpsys工具使用

我们知道Android使用ServiceManager服务进程来管理系统所有的服务,在系统启动时,每个服务必须注册到ServiceManager进程中,那如何查看系统运行了那些服务呢?ServiceManager提供了listServices接口来罗列出系统注册的所有服务。Android提供了dumpsys工具来dump出所有的服务信息,通过以下命令可以查看系统注册的所有服务:

adb shell dumpsys
Currently running services:
SurfaceFlinger
country_detector
cpuinfo
dbinfo
device_policy
devicestoragemonitor
diskstats
drm.drmManager
dropbox
entropy
fm
gfxinfo
hardware
input
isms
location
lock_settings
meminfo
network_management
notification
package
permission
phone
power
samplingprofiler
scheduling_policy
search
sensorservice
serial
servicediscovery
sim_manager
simphonebook
...
-------------------------------------------------------------------------------
DUMP OF SERVICE SurfaceFlinger:
Visible layers (count = 4)

...

也可以dump指定服务信息:

adb shell dumpsys SurfaceFlinger
Visible layers (count = 4)
+ Layer 0x41ba5008 (com.android.settings/com.android.settings.SprdUsbSettings)
Region transparentRegion (this=0x41ba51e4, count=0)
Region transparentRegionScreen (this=0x41ba503c, count=0)
Region visibleRegionScreen (this=0x41ba5018, count=0)
z= 21005, pos=(0,0), size=( 480, 854), crop=( 0, 38, 480, 854), isOp
aque=1, needsDithering=0, invalidate=0, alpha=0x00, flags=0x00000001, tr=[1.00,
0.00][0.00, 1.00]
client=0x41c14ee0, identity=7
format= 2, activeBuffer=[ 480x 854: 480, 2], transform-hint=0x00, queued-
frames=0, mRefreshPending=0

...

dumpsys源码分析

dumpsys工具比较简单,就是调用ServiceManager服务的listServices来查询系统注册的所有服务,并且通过checkService接口来获取服务的Binder远程代理对象,使用每个服务的dump函数来打印该服务的相关信息。
frameworks\native\cmds\dumpsys\dumpsys.cpp
int main(int argc, char* const argv[])
{
    signal(SIGPIPE, SIG_IGN);
    //取得ServiceManager服务的远程Binder代理对象
    sp<IServiceManager> sm = defaultServiceManager();
    fflush(stdout);
    if (sm == NULL) {
		ALOGE("Unable to get default service manager!");
        aerr << "dumpsys: Unable to get default service manager!" << endl;
        return 20;
    }
    Vector<String16> services;
    Vector<String16> args;
    //如果命令行参数只有1个
    if (argc == 1) {
    		//使用ServiceManager服务的Binder远程代理对象查询所有的服务
        services = sm->listServices();
        services.sort(sort_func);
        args.add(String16("-a"));
    } else {
    		//添加命令行指定的服务及参数
        services.add(String16(argv[1]));
        for (int i=2; i<argc; i++) {
            args.add(String16(argv[i]));
        }
    }
    //根据服务名称查找服务对应的Binder代理对象,如果存在,打印该服务
    const size_t N = services.size();
    if (N > 1) {
        // first print a list of the current services
        aout << "Currently running services:" << endl;
        for (size_t i=0; i<N; i++) {
            sp<IBinder> service = sm->checkService(services[i]);
            if (service != NULL) {
                aout << "  " << services[i] << endl;
            }
        }
    }
    //调用服务的dump函数打印服务相关信息
    for (size_t i=0; i<N; i++) {
        sp<IBinder> service = sm->checkService(services[i]);
        if (service != NULL) {
            if (N > 1) {
                aout << "------------------------------------------------------------"
                        "-------------------" << endl;
                aout << "DUMP OF SERVICE " << services[i] << ":" << endl;
            }
            int err = service->dump(STDOUT_FILENO, args);
            if (err != 0) {
                aerr << "Error dumping service info: (" << strerror(err)
                        << ") " << services[i] << endl;
            }
        } else {
            aerr << "Can't find service: " << services[i] << endl;
        }
    }
    return 0;
}

分享到:
评论

相关推荐

    Android 分析工具-dumpsys

    不需要打trace了,实时监控关心的关键信息的值...Android的服务基本都有dump信息,debug的利器,效率极高(相比trace和断点调试) 开发、维护人员需要经常使用并熟悉相关的表示 适时扩展dump的输出及格式,方便适时调试。

    Android中dumpsys命令用法简单介绍

    在Android手机上, 通过使用adb shell命令可以进入android系统的shell, 该shell除支持一些常用的标准命令之外,还支持一些和android系统相关的其他命令, 这些命令可以打印出系统当前的状态信息。 dumpsys就是这样...

    (Mac/Linux版)Android实时显示帧率(GameBench)

    android帧率可以通过adb shell dumpsys gfxinfo packages来查看,但是需要分析log,这种特别麻烦,分享一个免root获取帧率工具。注意:.jar文件在PC上运行。

    华为手机P30的Input 的Dumpsys信息详解.txt

    本资源以华为P30为例,详解地分析dumpsys input 的信息:1 帮助用户了解dumpsys 命令; 2 分析华为P30 的输入设备以及配置文件; 3. 针对input 的参数详解;

    monkey_android自动化工具

    android monkey python3 统计性能信息cpu,men,fps,battery,flow 支持wifi,gprs统计 统计crash信息 fps统计:需要打开开发者里面的GPU呈现模式分析-在adb shell dumpsys gfxinfo中

    android群雄传

    10.7 使用Dumpsys命令分析系统状态 247 第11章 搭建云端服务器 248 11.1 移动后端服务介绍 249 11.2 使用Bmob创建移动后端服务 250 11.2.1 数据服务 251 11.2.2 推送服务 254 第12章 Android 5.X新特性详解 ...

    Android系统添加自己写的工具

    在android系统的源码有很多工具的源码。存放路径如下 android/system 底层文件系统库、应用及组件,linux自带的 android/external android 使用的一些开源的模组 android/frameworks/base/cmds 一些android重要...

    Android脚本中写服务应用中启动服务

    Android脚本init.rc中写service,应用中启动该service

    Android读取本地图库与调用摄像头拍摄

    本文主要介绍如何读取Android本地图库的图片以及调用安卓的摄像头进行拍摄。 一、布局 布局比较简单,MainActviivty的布局文件只有两个按钮,一个是读取图库的,另一个是打开摄像头的,另外ResultActivity的布局只有...

    android启动相机三种方式

    基于android 2.3.3 三种调用相机的方式 分别为使用android自带的照相功能 指定存储目录 使用SurfaceHolder预览相机的图片

    Android:分析Android P编译,运行相关源代码-android

    文件名摘要0039通过UI界面来反推代码操作0038看代码自然是看Google官方发布的参考代码了0037 NDK安装及配置报错0036蓝牙串口注意事项0035用命令发广播0034 Android设置分析0033在AS中阅读Settings源代码,主要是配置...

    android audio 音频调试技巧

    android audio 音频调试技巧,pcm 声卡使用情况查看。dumpsys *audio*等

    android9.0ble补丁蓝牙语音遥控器支持补丁.rar

    确保文件无误后,通过dumpsys media.audio_policy查看ble hal是否正常加载。 以下是相关说明: AudioPolicyManager: 0xf20c5200 Command Thread: 0xf20af140 Tones Thread: 0xf20af020 ... - Available input ...

    cepheus_input.txt(dumpsys input信息)

    dumpsys input信息 cepheus_input.txt(小米9机器)

    Android设备挂机dump日志抓取脚本bat

    使用bat脚本编写,简单,点击就能用 不要安装各种软件环境

    dumpsys命令1

    dumpsys命令这是安卓提供的调试命令.和名字的翻译一样,倾倒系统信息.主要用来查询系统服务的运行状态.列出所有的系统服务:adb shell dumpsys

    java8源码-ShrinkApkAnalyzer:[apkanalyzer]从PC到Android的端口

    java8 源码 Shrink Apk Analyzer 将 Android SDK 里的为 PC ...dumpsys package 只能打印部分信息,无法转换为 xml 格式 综上,在 PC 上有 apkanalyzer,在 Android 上缺乏一个好用的工具。 本项目

    easy-dumpsys:输出以下adb命令的脚本:`adb shell dumpsys activity `以更小,更容易和用户友好的方式..

    easy-dumpsys:输出以下adb命令的脚本:`adb shell dumpsys activity `以更小,更容易和用户友好的方式..

    Android代码-XiaomiPJ

    categories: android tags: 小米手机悬浮窗权限 辅助功能 之 小米手机悬浮窗权限 最近做项目遇到小米手机比较人(zhuang)性(bi)化的悬浮窗权限,当在小米手机上安装完应用后默认是关闭这个权限的,需要用户手动到应用...

Global site tag (gtag.js) - Google Analytics