安卓debug工具---dumpsys

1、dumpsys简介

    Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,ADB或者串口连接设备后可以直接命令行执行adb shell dumpsys 查看系统信息。

2、dumpsys使用

$ dumpsys | grep "DUMP OF SERVICE"

由此可知,该命令打印出的是系统当前的所有正在运行的服务的信息。

从上面可以看出Service非常多,“DUMP OF SERVICE”关键字后面的单词都可以直接通过 “dumpsys + 单词 ”查看相关信息,具体每一个如何使用有一种通用的查看帮助的办法。

查看每一个命令的使用帮助,以下以meminfo 为例演示:

每个服务信息之间使用横线间隔。

在开发过程中, 使用dumpsys一个常用的用途是查看ActivityManagerService服务的信息。 下面分析ActivityManagerService。 该服务的信息从下面一行开始:

扫描二维码关注公众号,回复: 11407775 查看本文章

整个ActivityManagerService分为如下部分进行统计显示。不同Android版本会有所差异。

$ dumpsys activity intents

每个待处理的intent在ActivityManagerService内部使用一个PendingIntentRecord对象表示,并且会显示出所在应用的包名,并且会指定该intent是用来发送广播,启动activity或是启动service。

$ dumpsys activity broadcasts

首先会列出系统中所有注册的广播接收者

$ dumpsys activity broadcasts

$ dumpsys activity broadcasts

之后列出的是位于后台的历史广播:

$ dumpsys activity providers

provider相关的信息。由输出信息可知, 在ActivityManagerService中,一个provider组件使用一个ContentProviderRecord对象表示。

dumpsys activity services 是显示每个service的信息:

ACTIVITY MANAGER RECENT TASKS列出了最近打开的Task的信息,最上面的Recent #0是最新打开的Task信息,下面依次为更早时候打开的Task的信息(这里仅仅是粗略的activity task信息,详细信息通过tid在后面显示 )

ACTIVITY MANAGER ACTIVITIES列出了每个task的详细信息,即这个Task包含哪些Activity,他们的显示顺序是什么样的等等。上图中,id为269的task只包含1个Activity:StickySiloStubActivity

示例:如何通过dumpsys看广播是否发出和是否处理过

dumpsys window查看当前界面所在应用

mCurrentFocus是当前可以获得焦点的window,mFocusedApp是可以拿到焦点的app,这两个不一定是在一个包内

查看电视当前所包含的window

从下往上是window层级由高到低

window层级数值在/framwworks/base/core/java/android/view/WindowManager.java中定义

dumpsys package + 包名,查看应用相关信息:

activity信息、注册广播信息、权限、版本、ContentProvider信息、apk包的信息

例如:

dumpsys meminfo + 包名,查看应用占用内存情况

  dumpsys meminfo --oom,查看应用内存层级

dumpsys gfxinfo + 包名,查看应用丢帧情况

dumpsys cpuinfo,查看电视当前cpu使用情况,也可以直接用top命令查看当前cpu的使用情况。

dumpsys activity activities,可以查看电视当前activity stack 情况。也可以使用am stack list查看stack信息

猜你喜欢

转载自blog.csdn.net/kepengs/article/details/107252611
今日推荐