Android Log分析ANR简单小结
Posted guangdeshishe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Log分析ANR简单小结相关的知识,希望对你有一定的参考价值。
搜索关键字:
- 【last ANR】
- 【InputDispatcher】
- 【wm_on_】
- 【ActivityManager: ANR in】
分析过程:
- 搜索关键字【VM TRACES AT LAST ANR】找到ANR的trace文件(该文件内容其实就在下面几行),通过关键字【“main”】查看主线程调用栈,如果调用栈中有我们APP包名调用的方法就能直接定位到是哪里的问题了
- 搜索关键字【ActivityManager: ANR in】,下一行【Reason】可以直接看到ANR产生的原因
- 然后看看【CPU usage】部分,看看哪个APP占用cpu比例最高,如果某个APP占用CPU超过100%,那很大概率是该APP引起的;如果CPU占用率很低,那可能是主线程阻塞了。
- 【TOTAL:】部分可以看出占用CUP的哪一类操作,比如【iowait】是指正在等待IO操作;
- 如果【Reason:】显示” Input dispatching timed out”,那么可以搜索【InputDispatcher】以及【wm_on_】关键字,根据ANR发生时间找到该时间前后打印的Log,比如【Reason: Input dispatching timed out (ActivityRecord{c88403a u0 com.android.settings/.homepage.SettingsHomepageActivity t78} does not have a focused window)】,经过排查就是该Activity在ANR发生之前就已经stop了,导致没有focused window去处理该input事件
以上是关于Android Log分析ANR简单小结的主要内容,如果未能解决你的问题,请参考以下文章