(二)logcat/trace.txt日志文件的分析


1.logcat日志文件

>android日志系統提供了記錄和查看系統調試信息的功能,日志都是從各種軟件和一些系統的緩沖區中記錄下來的,緩沖區可以通過logcat命令來查看和使用

使用方式:

adb logcat [<option>]...[<filter-spec>]..

>logcat是以如下開頭的:

   ---------beginning of xxx

>開發者選項,有個叫做“日志記錄器緩沖區大小”,默認是256k,日志是循環寫入環形緩沖區的,通常情況下,寫滿時最舊的日志會被刪除以給新輸出的日志留內存空間

2.log緩沖區

android log輸出量巨大,特別是通信系統的log,因此android把log輸出到不同的緩沖區。

目前定義了四個log緩沖區:

Radio:輸出通信系統的log        如,nfc、3G/4G  藍牙、wifi等

System:輸出系統組件的log      如,調用攝像頭等

Events:輸出event模塊的log     如,觸摸事件、按鍵事件

Main:輸出java層的log(不屬於上面三層的log),測試app過程着重關注Main模塊

注意:

默認輸出Main緩沖區log,如想輸出通信系統的log:

adb logcat -b  radio  >  D:\test\log_radio.txt       -- 重定向輸出日志

3.logcat日志文件分析

輸出的日志格式如下:

3.1由5部分組成:

>寫下日志時的時間

日志中添加時間:adb logcat   -v  time   >  D:\test\log.txt 

>優先級,在Android中,日志的優先級從低到高分以下幾種:

V--verbose(啰嗦,最低級別,開發調試中的一些詳細信息,僅在開發中使用,不可在發布產品時使用)

D--Debug(調試,用於調試的信息,可以在發布產品中關閉,比較常見)

I--Info(信息,一般提示性的消息)

W--Warning(警告)

E--Error(錯誤,已經出現可影響運行的錯誤,比如應用crash時輸出的日志)

>標簽(tag),標明日志發起者和方便日志的過濾篩選,如上中的ActivityManger,開發自己定義的,方便查找

> PID(進程ID),如上中的491

>正文,本日志的主體內容

3.2 crash崩潰

>現象:提示xx停止運行

>如何在日志中檢索?

出現崩潰后,輸出最新日志,搜索 FATAL EXCEPTION關鍵字(代表嚴重錯誤)、crash關鍵字 ,然后將找到的E級別日志(方法調用棧)全部提交給到開發

3.3ANR無響應

>現象:當操作在一段時間內系統無法處理時,系統層面會彈出下圖那樣的ANR對話框

>為用戶在主線程長時間被阻塞時提供處理交互,提高用戶體驗

>Android系統一種自身檢測機制

>如何在日志中檢索?

 

 

出現ANR后,輸出最新日志,搜索ANR in 關鍵字,但是根據E級別日志開發往往不能定位ANR問題,需要找到上圖紅框中標出的traces.txt文件,從而找到方法調用棧,使得開發能夠定位問題

>>如何找到traces.txt?

adb shell 

cd /data/anr

ls

找到traces.txt 文件,exit

拉取到本地:adb  pull  /data/anr/traces.txt   D:\test

注意:

traces.txt時間和緩沖區日志時間會有差異(幾秒),因為屬於兩個不同的模塊,系統不會同步寫

traces.txt只能保留最近一次的anr信息

>解決只能保留最近一次的anr信息的方法,dropbox 

adb  shell 

依次找到  /data/system/dropbox 目錄,如圖:

 

 

 data_app開頭的是第三方手動安裝的應用異常信息,然后就可以把/data/system/dropbox目錄拉取出來然后給到開發人員

===============================================

需要說明的是:

>安卓手機碎片化嚴重,不能保證每台手機都有Dropbox

>不是所有手機都是root權限

上述兩種情況下:

其實直接把traces.txt 文件拉取出來就好:adb  pull  /data/anr/traces.txt   D:\test

說到底,如果app出現問題的話logcat系統級別的日志(adb logcat   -v  time   >  D:\test\log.txt )  會體現出來,除非開發做了異常捕獲,那就需要問開發是不是做了異常捕獲,捕獲到了哪里~

 


免責聲明!

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



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