1.發生異常之後,直接查看最後1個異常以及該異常的第1個棧記錄。E.G.
02-27 14:01:06.126 23653 23653 E AndroidRuntime: java.lang.RuntimeException: Unable to pause activity {com.codefoxx.namingexample/com.codefoxx.namingexample.Mai nActivity}: java.lang.ArithmeticException: divide by zero 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3660) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3604) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4393) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.access$1000(ActivityThread.java:150) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.os.Looper.loop(Looper.java:168) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5885) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: Caused by: java.lang.ArithmeticException: divide by zero 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at com.codefoxx.namingexample.MainActivity.onPause(MainActivity.java:60) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.Activity.performPause(Activity.java:6374) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1412) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3639) 02-27 14:01:06.126 23653 23653 E AndroidRuntime: ... 10 more
第14行為最後一個異常,第15行為該異常的第1個棧記錄。
2.使用ADB + LOGCAT COMMAND LINE
使用格式如下
adb -s abcdefghijklnmopqrstuvwxyz logcat LoginPresenter:d LoginActivity:d *:w |
LoginPresenter:D -> 表示只會顯示TAG為LoginPresenter而優先性為Debug
LoginActivity:D -> 表示只會顯示TAG為LoginActivity而優先性為Debug
adb -s abcdefghijklnmopqrstuvwxyz ->表示在連接多數裝置的情況指定其中之一裝置。
*:w -> 表示設定所有TAG(除了在該指令之前的)的優先性為Fatal。
若改為*:S則會將所有TAG(除了在該指令之前的)的優先性設為Silent,而Silent則代表不會輸出任何訊息。
以上的logcat指令代表:
會顯示TAG為LoginPresenter而優先性為Debug,以及TAG為LoginActivity而優先性為Debug,以及其他的TAG只有Fatal會顯示