1.首先在mainactivity模仿一个ANR产生
2.会在Android Monitor 中打印如下语句:
Thread[2,tid=8461,WaitingInMainSignalCatcherLoop,Thread*=0x55a49e8c40,peer=0x12cc10a0,"Signal Catcher"]: reacting to signal 3
Wrote stack traces to '/data/anr/traces.txt'
3.把该文件移到电脑桌面方便进行分析:进入Terminal,输入下列命令:
C:\Users\liuyan\AndroidStudioProjects\TestAnr1>
输入:adb pull /data/anr/traces.txt ~/liuyan/Desktop/
注意:要绝对路径
然后会提示如下:
/data/anr/traces.txt: 1 file pulled. 3.1 MB/s (132753 bytes in 0.041s)
4.日志如下:(主要看标记部分)
----- pid 8456 at 2018-04-09 08:26:43 ----- Cmd line: com.example.liuyan.testanr1 Build fingerprint: 'HUAWEI/GRA-TL00/HWGRA:6.0/HUAWEIGRA-TL00/C01B370:user/release-keys' ABI: 'arm64' Build type: optimized Zygote loaded classes=4071 post zygote classes=394 Intern table: 56242 strong; 27 weak JNI: CheckJNI is on; globals=308 (plus 366 weak) Heap: 3% free, 17MB/18MB; 39227 objects DALVIK THREADS (15): "Signal Catcher" daemon prio=5 tid=2 Runnable | group="system" sCount=0 dsCount=0 obj=0x12cc10a0 self=0x55a49e8c40 | sysTid=8461 nice=0 cgrp=top_visible sched=0/0 handle=0x7fb28ac450 | state=R schedstat=( 1080976 1016912 7 ) utm=0 stm=0 core=4 HZ=100 | stack=0x7fb27b0000-0x7fb27b2000 stackSize=1013KB | held mutexes= "mutator lock"(shared held) (no managed stack frames) "main" prio=5 tid=1 Sleeping | group="main" sCount=1 dsCount=0 obj=0x75b7b508 self=0x55a2dcd9d0 | sysTid=8456 nice=-1 cgrp=top_visible sched=0/0 handle=0x7fb778b000 | state=S schedstat=( 514598240 24205168 361 ) utm=44 stm=7 core=3 HZ=100 | stack=0x7fc615a000-0x7fc615c000 stackSize=8MB | held mutexes= at java.lang.Thread.sleep!(Native method) - sleeping on <0x0bbfbe65> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:1046) - locked <0x0bbfbe65> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:1000) at com.example.liuyan.testanr1.MainActivity$3.onClick(MainActivity.java:40) at android.view.View.performClick(View.java:5264) at android.view.View$PerformClick.run(View.java:21297) at android.os.Handler.handleCallback(Handler.java:743) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5621) at java.lang.reflect.Method.invoke!(Native method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)