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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM