標籤:
在Android開發過程中,總免不了要調試,無論是Debug,還是Android內建的Logcat,抑或DDMS等等,使用得當會給我們開發帶來事半功倍的作用。平時各種調試手段都試過,但很多東西,特別是一些命令,用完就忘了,想起來要用又要google;所以打算把這些東西整理出來,方便日後查看,也算是對一些經驗的總結
Logcat1.查看Android的logcat日誌
Android系統在運行時會產生很多日誌,以方便開發人員調試。Logcat日誌是儲存在洗頭膏記憶體中的,從系統啟動後就將系統各模組和各應用輸出地日誌統一放在記憶體中的一個環狀隊列中。將日誌儲存在系統記憶體中,確保了日誌功能不會影響應用的速度,而環狀隊列是避免日誌無限增長(環/Users/adison/octopress/source/_posts/2014-10-18-volley-cachefen-xi.markdown狀結構,最後一個記錄寫滿後會從第一個位置開始寫)。
可以使用 “adb logcat” 查看這個記憶體中的日誌
在應用中可以用Log類中的方法輸出logcat日誌。下面是幾個常用的日誌函數:
- v(String,String) 記錄冗餘層級的日誌
- d(String,String) 記錄調試層級的日誌
- i(String,String) 記錄資訊層級的日誌
- w(String,String) 記錄警告層級的日誌
- e(String,String) 記錄運行錯誤層級的日誌
它們的優先順序由低到高是v < d < i< w< e
2.過濾logcat日誌2.1.基於優先順序
adb logcat提供了額外的功能,可基於日誌優先順序來過濾日誌。用法為adb logcat *:#,其中#為上述層級之一。
所有優先順序都自動包含比它高的優先順序,因此adb logcat :W包含警告、錯誤和致命錯誤。當應用崩潰時,您可以使用adb logcat :E來查看導致該問題的原因,而不必費力去查看那些不著邊際的調試用日誌。然而在將日誌提供給開發人員時,應包含所有日誌(不要設定任何過濾),因為通過調試日誌通常可以找到問題的真正原因。
在調試應用時,可以使用“<標籤>:<優先順序>”的過濾條件去除很多不相關的日誌。其中<標籤>條件告訴logcat只輸出具有制定標籤的日誌,而“優先順序”條件則告訴logcat要輸出日誌的最低優先順序,可以在logcat命令列中同時制定多個過濾條件,每個條件使用空格分隔即可。下面的命令只輸出變標籤為“ActivityManager”,優先順序高於“資訊”層級,標籤為“dalvikvm”,優先順序高於“調試”層級的訊息,最後的“*:s”過濾條件將具有其他標籤的日誌訊息全部屏蔽。
adb logcat ActivityManager:I dalvikvm:D *:s
2.2.基於內容
您還可以基於“內容”來過濾。比方說,您要收集所有提到術語“Google”的日誌行。可以這麼做:
adb logcat | grep Google
3.其他技巧清空
如果您發現螢幕上塞滿了沒用的日誌資訊,但仍需要詳細的日誌,可以使用adb logcat -c清除日誌緩衝區。它會重設日誌並只顯示重設後的日誌內容。
Logcat用於錯誤跟蹤
adb shelllogcat -d -f /sdcard/logcat.log *:E
-d 轉存logcat內容
-f 指定日誌儲存位置
*:E 輸出錯誤記錄檔
Android調試之Logcat