android抓取各種log的方法


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
中相關變量情況等。


在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 button欄中選擇Dump Hprof file, 保存就可以
第三種方式: 通過代碼的方式
   在android.os.Debug 這個class 中有定義相關的抓取hprof 的method.
如: public static void dumpHprofData(String fileName) throws IOException;
這樣就可以在代碼中直接將這個process 的hprof 保存到相相應的文件里。注意這個僅僅能抓取當時的
process.
假設想抓其它的process 的hprof, 那么就必須通過AMS 幫忙了。
能夠先獲取IActivityManager 接口,然后調用它的dumpheap 方法。詳細的代碼。大家能夠參考
frameworks/base/cmds/am/src/com/android/commands/am/am.java 中的調用代碼
抓取回hprof 后。就能夠用hprof-conv 命令將DVM 格式的hprof 轉換成標准的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 //各類信息。比方進程信息,內存信息。進程是否異常,kernnel的log等
adb shell dumpcrash
adb shell dumpsys  //查詢全部service的狀態


免責聲明!

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



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