1. 程式人生 > 其它 >APP日誌檔案抓取及分析

APP日誌檔案抓取及分析

(一)DDMS

Dalvik Debug Monitor Service ( Dalvik除錯監控服務) ,視覺化的圖形介面除錯監控工具。不同等級log資訊顯示的顏色不同,使用起來方便直觀。ddms監控系統或應用日誌、監控執行緒狀態、VM使用狀況(記憶體洩漏通過它來判斷)、模擬簡訊電話事件、生成logcat日誌、檔案管理及截圖等功能。

開啟方式:

(前提:已增加JAVA環境變數及androidsdk環境變數)

1.雙擊\android-sdk windows\tools (部分可能在platform-tools )目錄下ddms.bat直接啟動;

2.在eclipse右上角新增工具圖示中,點選ddms;

使用方法:

1.接入裝置, ddms裝置列表中會識別到該裝置(如果沒有識別,可嘗試結束工作管理員中所有adb相關的程序,並重置ddms的adb );

2.裝置列表中選中需要抓取的裝置名稱, logcat區會顯示該裝置的相關日誌資訊,預設顯示verbose;

3.選擇日誌資訊等級為error ,若程式崩潰,抓取error等級下與所測應用相關的日誌即可;

使用示例:

(二)LOGCAT

命令列工具,輸出命令列的日誌資訊。

開啟方式:

(前提:已增加JAVA環境變數及android sdk環境變數)

進入cmd ,進入命令列後輸入adb logcat;

使用方法:

1.接入裝置,且adb devices中有裝置資訊;

2.輸入adb logcat ,即可列印裝置相關的日誌資訊,預設列印verbose,若只是想抓取程式崩潰的相關日誌資訊,可輸入adb logcat *:E ,選擇與所測應用相關的日誌即可;

使用示例:

(三)Monkey中斷日誌

Monkey執行時,遇到異常並報錯時,產生的命令列日誌資訊。

開啟方式:

開啟cmd ,進入命令列後輸入adb shell ,進入shell命令列後輸入monkey -p com.xxx.xxx -V 1000

使用方法:

1.接入裝置,且adb devices中有裝置資訊;

2.開啟cmd,輸入monkey -p com.xx.xxx -v 1000 ,當monkey異常中斷(即應用程式崩潰或接收到異常、應用程式產生應用程式不響應( ANR )異常兩種異常)後;

3.檢視異常日誌是否與所測的APP相關,如相關則儲存異常輸入的日誌資訊即可;

使用示例:

LOG檔案分類

實時列印的主要有:logcat main,logcat radio,logcat events,tcpdump等。

狀態資訊的有:adb shell cat /proc/kmsg ,adb shell dmesg,adb shell dumpstate,adb shell dumpsys,adb bugreport等。

LOG檔案抓取詳解

一、實時列印

//列印應用程式的log

adb logcat -b main -v time>app.log

//列印射頻相關的log

adb logcat -b radio -v time> radio.log

//列印系統事件的日誌,比如觸屏事件

adb logcat -b events -v time

//android log的抓取

adb logcat

//kernel log的抓取

adb shell cat /proc/kmsg

//log 資訊的儲存

mkdir /data/anr

logcat *:V > /data/anr/android

demsg >/data/anr/kernel

//按ctrl+c結束log輸出

adb pull /data/anr ./log/

tcpdump是很有用的,對於TCP/IP協議相關的都可以使用這個來抓,adb shell tcpdump -s 10000 -w /sdcard/capture.pcap。

二、狀態資訊

1.bugreport(adb bugreport>bugreport.log),裡面包含有dmesg,dumpstate和dumpsys。

2.dumpstate是系統狀態資訊,裡面比較全,包括手機當前的記憶體資訊、cpu資訊、logcat快取,kernel快取等等。

3.adb shell dumpsys這個是關於系統service的內容,這個命令還有更詳盡的用法,比如adb shell dumpsys meminfo system是檢視system這個process的記憶體資訊。

4.kmsg抓取

adb shell cat /proc/kmsg > kmsg.txt,開啟後查msm_kgsl欄位

說明:用於檢索用printk生成的核心訊息,任何時刻只能有一個具有超級使用者許可權的程序可以讀取這個檔案。

5.dmsg抓取

adb shell dmesg > dmesg.txt

說明:dmesg用來顯示開機資訊,kernel會將開機資訊儲存在ring buffer中。若是開機時來不及檢視資訊,可利用dmesg來檢視。dmesg是kernel的log,凡是跟kernel相關的,比如driver出了問題(相機,藍芽,usb,啟動,等等)開機資訊亦儲存在/var/log目錄中,名稱為dmesg的檔案裡,more /var/log/dmesg。

6.工程模式下log的抓取

對於Apollo手機請撥打*#*#8888#*#* ,然後勾選相應的LOG。待測試結束後,通過SD卡匯出LOG到PC。

三、Log分析:

Get Log from Android System adb bugreport > bugreport.txt copy bugreport to the current directory.

bugreport裡面包含了各種log資訊,大部分log也可以通過直接執行相關的程式來直接獲得.

獲取該log:讀取檔案/proc/wakelocks

核心對一些程式和服務喚醒和休眠的一些記錄:

KERNEL CPUFREQ

(Linux kernel CPUfreq subsystem) Clock scaling allows you to change the

clock speed of the CPUs on the fly.

This is a nice method to save battery power, because the lower the

clock speed is, the less power the CPU consumes.

PROCESSES

面試題分享

作為測試怎麼在app發生異常的時候提交有效資訊:

1、描述復現場景(復現步驟、復現現象)

2、發生異常截圖

3、日誌檔案

(1)如果發生了崩潰(crash):

adb logcat -v time >本地檔案中

直接拉取dropbox目錄中的data_app_crash開頭的檔案

(2)如果發生的無響應(ANR):

發生單次ANR:

adb logcat -v time 獲取logcat,拉取/data/anr/traces.txt

發生多次ANR:

拉取dropbox目錄中的data_app_anr開頭的檔案

跑monkey壓力穩定性測試,記得清空dropbox裡面的相關的異常檔案資訊哦