使用trace文件分析ANR
2018-02-24 09:48
357 查看
ANR(Application Not Responding):应用程序无响应,是Android中AMS与WMS监测应用响应超时的表现;
我们应用开发中常见的ANR主要有如下几类:
按键触摸事件派发超时ANR,一般阈值为5s(设置中开启ANR弹窗,默认有事件派发才会触发弹框ANR);广播阻塞ANR,一般阈值为10s(设置中开启ANR弹窗,默认不弹框,只有log提示);
服务超时ANR,一般阈值为20s(设置中开启ANR弹窗,默认不弹框,只有log提示);
ANR的定位与分析
当ANR发生时除过logcat可以看见的log以外我们还可以在系统指定目录下找到traces文件进行分析,发生ANR后我们可以通过如下命令得到ANR trace文件:1.“`adb pull /data/anr/traces.txt ./
//显示进程id、ANR发生时间点、ANR发生进程包名 ----- pid 19073 at 2015-10-08 17:24:38 ----- Cmd line: com.example.yanbo.myapplication //一些GC等object信息,通常可以忽略 ...... //ANR方法堆栈打印信息!重点! DALVIK THREADS (18): "main" prio=5 tid=1 Sleeping | group="main" sCount=1 dsCount=0 obj=0x7497dfb8 self=0x7f9d09a000 | sysTid=19073 nice=0 cgrp=default sched=0/0 handle=0x7fa106c0a8 | state=S schedstat=( 125271779 68162762 280 ) utm=11 stm=1 core=0 HZ=100 | stack=0x7fe90d3000-0x7fe90d5000 stackSize=8MB | held mutexes= at java.lang.Thread.sleep!(Native method) - sleeping on <0x0a2ae345> (a java.lang.Object) at java.lang.Thread.sleep(Thread.java:1031) - locked <0x0a2ae345> (a java.lang.Object) //真正导致ANR的问题点,可以发现是onClick中有sleep导致。我们平时可以类比分析即可,这里不详细说明。 at java.lang.Thread.sleep(Thread.java:985) at com.example.yanbo.myapplication.MainActivity$1.onClick(MainActivity.java:21) at android.view.View.performClick(View.java:4908) at android.view.View$PerformClick.run(View.java:20389) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5743) at java.lang.reflect.Method.invoke!(Native method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:988) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783) ...... //省略一些不常关注堆栈打印 ...... ``
OK,ANR分析结束。
转载:http://blog.csdn.net/jiangguangchao/article/details/54908477
相关文章推荐
- 使用trace文件分析ANR
- [Android Pro] 通过Android trace文件分析死锁ANR
- Android ANR log trace日志文件分析
- 通过Android trace文件分析死锁ANR
- android trace文件分析ANR
- 通过Android trace文件分析死锁ANR
- 通过Android trace文件分析死锁ANR
- 通过Android trace文件分析死锁ANR
- 使用SQL Profiler trace(2005)的经验分享(新建跟踪、分析跟踪文件)
- trace文件分析ANR问题
- 通过Android trace文件分析死锁ANR
- 通过Android trace文件分析死锁ANR实例过程
- 通过Android trace文件分析死锁ANR
- Log分析 你还可以去data/anr的目录下把trace.txt这个文件拷贝出来,在该文件中会写了产生anr的函数堆栈可以帮助分析
- [Android Pro] 通过Android trace文件分析死锁ANR
- 通过Android trace文件分析死锁ANR实例过程
- 通过Android trace文件分析死锁ANR
- ADPLUS使用配置文件设置断点时无法创建DUMP文件原因分析
- 使用windbg分析dmp文件定位程序bug
- tkprof分析trace文件