Android log

微微微笑發表於2015-08-27

實時log

 1. 抓取應用程式的日誌。

# adb logcat -b main -v threadtime > /sdcard/main.log

 2. 抓取跟 radio/telephony 相關的資訊。

# adb logcat -b radio -v threadtime > /sdcard/radio.log

 3. 抓取系統事件日誌,如觸屏事件。

# adb logcat -b events -v threadtime > /sdcard/events.log

4. 抓取kernel log。

# adb logcat -b kernel > /sdcard/kernel.log
# adb shell dmesg > /sdcard/dmesg.log  //匯出當前快取的 kernel log
# adb shell kmsgcat   //實時檢視kernel log
# adb shell cat /proc/kmsg > kernel.log  // 抓取 printk生成的核心訊息

 5. 抓取 TCP/IP協議相關的日誌

# adb shell tcpdump -s 10000 -w /sdcard/tcpip.pcap

 

狀態log

1.獲取系統狀態資訊,如手機的記憶體資訊、CPU資訊、快取等。

# adb shell dumpstate > /sdcard/dumpstate.log

2. 獲取系統程式有關的資訊。比如:當前執行的服務,程式資訊等。

# adb shell dumpsys

如果想檢視特定程式的特定service ,如 com.android.mms程式的meminfo,可以使用

# adb shell dumpsys meminfo com.android.mms

service有一下幾種:

meminfo   顯示記憶體資訊

cpuinfo      顯示CPU資訊

account     顯示accounts資訊

activity      顯示activities的資訊

window      顯示鍵盤,視窗和它們的關係

wifi           顯示wifi資訊    

3. 獲取 所有狀態資訊。包括 dumpsys,dmesg和dumpstate

# adb shell bugreport > /sdcard/bugreport.log

4. 檢視記憶體資訊

# adb shell cat /proc/meminfo
# adb shell cat /proc/vmstate  //檢視虛擬記憶體資訊

 

log 分析

1. 有沒有捕獲異常

關鍵字: Exception

 

2. ANR

ANR的log一般都位於 /data/anr/,

關鍵字: ANR

例子: E/ActivityManager( 957): ANR in com.ipanel.join.appstore

 

3. Fatal

Fatal 一般比較嚴重,很多都很動態庫和空指標有關,一般會接下來列印"Build fingerprint:" 或 ”NullPointerException“

 

4. 動態庫問題

關鍵字: Build fingerprint

 

5. 空指標問題

關鍵字:NullPointerException

 

6. kernel panic

只有載入到核心空間的驅動模組才能直接導致kernel panic,你可以在系統正常的情況下,使用lsmod檢視當前系統載入了哪些模組。
除此之外,內建在核心裡的元件(比如memory map等)也能導致panic。

kernel panic分為 兩種:

hard panic(關鍵字: Aieee)

soft panic(關鍵字: Oops)

參考: http://www.chengxuyuans.com/Android/64872.html

 

7.tombstone

 tombstone 一般是由Dalvik錯誤,狀態監視偵錯程式,C層程式碼以及libc的一些問題導致的。
當系統發生tombstone的時候,kernel首先會上報一個嚴重的警告訊號(signal),上層接收到之後,程式的除錯工具會把程式中當時的呼叫棧現場儲存起來,並在系統建立了data/tombstones目錄後把異常時的程式資訊寫在此目錄裡面,開發者需要通過呼叫棧來分析整個呼叫流程來找出出問題的點。
日誌路徑: /data/tombstones

 

8. system crash

kernel log會出現: service 'activity' died

‘activity' 可以是任意的activity。

幾種issue的區分

1. kernel panic:板子會reset到固定頁面,如"EMMD USB DUMP"。

2. System hang: 觸控按壓沒有任何反應,console沒有輸出。

3. UI hang: 系統UI沒有任何反應,但是console或者adb shell 有輸出。

4. system crash: 可能會自動重啟。

相關文章