如何查看Android的ANR(無響應)異常

在Android開發中,當程序發生異常時會拋出異常信息,可以通過如下代碼來獲取異常信息,然而在ANR時我們在Logcat中並看不到異常信息。

Thread.setDefaultUncaughtExceptionHandler(new Thread.
 UncaughtExceptionHandler() {
	public void uncaughtException(Thread t, Throwable e) {
	   System.out.println(t + " throws exception: " + e);
	}
 });

那麼我們在遇到一個ANR異常時,該怎樣去排查是哪裏的錯誤呢。通過查看Logcat的打印日誌,會發現在每次出現ANR時都能看到這兩句:
I/art: Thread[2,tid=25238,WaitingInMainSignalCatcherLoop,Thread*=0xafa0e400,peer=0x12c2a080,"Signal Catcher"]: reacting to signal 3
I/art: Wrote stack traces to '/data/anr/traces.txt'

在發生ANR時,系統會將異常信息寫入到traces文件中,系統會記錄異常的位置、CPU和內存當時的使用情況,通過查看日誌基本就能判斷問題所在。
接下來打開該文件,通過shell命令就可以了。
如使用cat的打開文件:
1,
adb shell
-->
cat /data/anr/traces.txt

2,adb shell "cat /data/anr/traces.txt" | less


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章