Android常用調試命令、工具匯總 (一)命令篇

一、命令篇

內存查看:

使用場景:跟蹤進程內存使用情況,看是否存在內存回收不瞭的問題,如果程序存在內存泄露問題,通過內存動態占用情況可以看出一些端倪。

2 查看系統dalvik給每一個進程分配的可用內存情況:

root@android:/ # getprop

[dalvik.vm.heapgrowthlimit]: [192m] :進程最大可分配到192m 如果哪個進程超過這個值就會發生OOM問題。

[dalvik.vm.heapmaxfree]: [8m]

[dalvik.vm.heapminfree]: [2m]

[dalvik.vm.heapsize]: [256m] :單個虛擬機可分配的最大內存=256m

[dalvik.vm.heapstartsize]: [8m]

2 查應用進程占用內存分佈:

root@android:/ # dumpsys meminfo

2 查指定進程占用內存情況,比如電話進程

root@android:/ # dumpsys meminfo | grep phone

2 查指定幾個進程占用內存情況,比如電話進程、電話本進程、信息進程

root@android:/ # dumpsys meminfo | grep -E “phone|mms|contacts”

內存泄露分析:

https://blog.csdn.net/rambomatrix/article/details/17485503

AM調試:

2 模擬發送廣播:通過命令行執行adb shell am broadcast發送廣播通。這個在調試的時候常用到。

adb shell am broadcast 後面的參數有:
[-a ]
[-d ]
[-t ]
[-c [-c ] …]
[-e|–es …]
[–ez …]
[-e|–ei …]
[-n ]
[-f ] []

例如:adb shell am broadcast -a com.android.test –es test_string “this is test string” –ei test_int 100 –ez test_boolean true說明:藍色為key,紅色為alue,分別為String類型,int類型,boolean類型

2 Android AM命令行啟動程序的方法

附上鏈接,感覺不是很常用到。

https://blog.csdn.net/sunrock/article/details/5675067

ADB命令調試

Debug 版本機器:

adb remount 重新掛載文件系統

adb pull …/Phone.apk g:/ 把Phone.apk從手機中取出來放到G盤。如果需要反編譯別人機器的apk,可以這樣取出來。

adb push …/Phone.apk system/app 把修改後的Phone.apk放入手機,放入以後需要讓phone進程重啟一次。

root@android:/ ps | grep phone 查找phone進程的pid

root@android:/ kill 1212 殺掉phone進程

USER版本機器:

使用 刷機精靈 ROOT,root成功率很高。

adb shell 進入shell

Su 獲取Root權限

root@android:/# chmod -R 777 system/ 給指定目錄賦予讀寫權限,然後可以更改這個目錄 裡面的文件。

抓取LOG

2 Adb logcat

Android日志系統為日志消息保持瞭多個循環緩沖區,而且不是所有的消息都被發送到默認緩沖區,要想查看這些附加的緩沖區,可以使用-b 選項,以下是可以指定的緩沖區:

radio — 查看包含在無線/電話相關的緩沖區消息

events — 查看事件相關的消息

main — 查看主緩沖區(默認緩沖區)

常用的打印方法有:

-v time 打印時間

-c 清理緩沖,在打印Log之前可以先執行一次清理,可以減少無效log。

-s LOG_TAG 打印指定的log tag對應的log

-f 文件名 將日志輸出到文件

CPU /THREAD查看

查看當前應用有多少個線程在跑,每個線程cpu使用情況如何。如果程序寫的有問題,開啟瞭一些線程在後臺跑卻從未釋放,可能給程序帶來嚴重的影響。

root@android:/ # top -t

可以看到電子郵件這個應用裡面所有的線程使用cpu的情況。這個數據在分析一些cpu使用高的問題時很好用。

歡迎大傢補充。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *