1慕购、logcat
?(四類log buffer是main,radio,system,events)
adb wait-for-device logcat??
adb logcat -v time > logcat.txt ? ? ?//默認是-b main -b system
adb logcat -v time -b main ? ? ? ?//main log
adb logcat -v time -b radio?//radio log
adb logcat -v time -b system?//system log
adb logcat -v time -b events
2淳衙、anr log
adb pull /data/anr
3、tombstone log
adb pull /data/tombstones
4饺著、core log
adb pull? /data/log/core
5箫攀、開機log
adb shell dmesg > dmesg.txt
6、logcatch
adb pull /data/logcatch
7瓶籽、qxdm log
adb pull /sdcard/logs
8匠童、 hprof log
在分析app 時,我們通常需要分析app 的java heap 資料塑顺,如分析java 的memory leak, 追查heap
中相關(guān)變量情況等汤求。
在android 中抓取app 的hprof 操作方式有下面幾種:
第一種方式: 使用am 命令
adb shell am dumpheap {Process} file
如 adb shell am dumpheap com.android.phone /data/anr/phone.hprof
adb pull /data/anr/phone.hprof
第二種方式: 使用DDMS 命令
在DDMS 中選擇對應的process, 然后在Devices 按鈕欄中選擇Dump Hprof file, 保存即可
第三種方式: 通過代碼的方式
在android.os.Debug 這個class 中有定義相關(guān)的抓取hprof 的method.
如: public static void dumpHprofData(String fileName) throws IOException;
這樣即可在代碼中直接將這個process 的hprof 保存到相對應的文件中严拒,注意這個只能抓取當時的
process.
如果想抓其他的process 的hprof, 那么就必須通過AMS 幫忙了扬绪。
可以先獲取IActivityManager 接口,然后調(diào)用它的dumpheap 方法裤唠。具體的代碼挤牛,大家可以參考
frameworks/base/cmds/am/src/com/android/commands/am/am.java 中的調(diào)用代碼
抓取回hprof 后,就可以用hprof-conv 命令將DVM 格式的hprof 轉(zhuǎn)換成標準的java 命令的hprof
hprof-conv in.hprof out.hprof
然后使用如MAT 之類的工具進行具體的分析
9种蘸、bugreport
adb bugreport > bugreport.txt
10墓赴、kernel log(只有從當前時間起的很少的log)
cat proc/kmsg > kmsg.txt
11、其他
adb shell dumpstate //各類信息航瞭,比如進程信息诫硕,內(nèi)存信息,進程是否異常刊侯,kernnel的log等
adb shell dumpcrash
adb shell dumpsys//查詢所有service的狀態(tài)