ANR正确解读,准确定位并解决的思路与方法?

xqhrs232 2012-03-15 10:01:55
ANR正确解读,准确定位并解决的思路与方法?

最近自己定制的系统动不动出现ANR对话框,搞的头痛死了.大家有没好的解决思路与方法?怎么正确解读,准确定位?
...全文
1698 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2012-05-21
  • 打赏
  • 举报
回复
最近是乎把这个问题找到了-----自己开的线程里面有WHILE死循环---修改为SELECT函数来阻塞线程就不怎么见ANR窗口弹出来了,看LOGCAT也不见ANR消息打印出来,看来就是这个WHILE死循环影响的。希望真正的情况确实如此啊!
xqhrs232 2012-05-05
  • 打赏
  • 举报
回复
ANR由\frameworks\base\services\java\com\android\server\Am\ActivityManagerService.java中的appNotResponding( )函数打印出来
xqhrs232 2012-05-05
  • 打赏
  • 举报
回复
ANR由那个文件打印出来----frameworks\base\services\java\com\android\server\ProcessStats.java


1》printCurrentState( )----CPU usage from
2》printProcessCPU( )
b87936260 2012-05-03
  • 打赏
  • 举报
回复
没那么复杂,在data下有个anr文件夹,里面有个trace.txt文件,记录了最近一次ANR发生在哪一行以及原因
zhu_nn 2012-05-02
  • 打赏
  • 举报
回复
另起一个线程
qthsrs232 2012-05-02
  • 打赏
  • 举报
回复
最近一直被这样的问题困扰!!!不知道怎么定位ANR。怎么调试ANR发生的代码。
xqhrs232 2012-03-21
  • 打赏
  • 举报
回复
Android ANR问题的分析和解决
http://wenku.it168.com/d_000083535.shtml
xqhrs232 2012-03-19
  • 打赏
  • 举报
回复
xqhrs232 2012-03-19
  • 打赏
  • 举报
回复
请教 android service ANR问题
http://bbs.189works.com/thread-40746-1-1.html
xqhrs232 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yiyaaixuexi 的回复:]
xqhrs232 总转好帖!
[/Quote]

只是进行了简单的一个收集!!!
qthsrs232 2012-03-16
  • 打赏
  • 举报
回复
ERROR/ActivityManager(2099): 92% 2032/MAP100serial:15% user + 76% kernel
ERROR/ActivityManager(2099): 92% 2044/MAP100serial:15% user + 76% kernel


但是用PS显示进程PID号只看到一个啊!怎么出来个副本?守护进程的启动我用了oneshot开关啊----应该就只会启动一次啊!

CPU usage from 12750ms to 1460ms ago:----表示发生ANR之前的系统CPU状况
CPU usage from 334ms to 848ms later:----表示发生ANR之后的系统CPU状况



xqhrs232 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xqhrs232 的回复:]
举个ANR完整的例子


C/C++ code


ERROR/ActivityManager(2099): ANR in com.android.launcher(com.android.launcher/com.android.launcher2.launcher)

ERROR/ActivityManager(2099): Reason:keyDispatchingTimeO……
[/Quote]


ERROR/ActivityManager(2099): 92% 2032/MAP100serial:15% user + 76% kernel
ERROR/ActivityManager(2099): 92% 2044/MAP100serial:15% user + 76% kernel

怎么会开启两个守户进程?并且他们的PID号还不一样,奇怪了呢?!


xqhrs232 2012-03-16
  • 打赏
  • 举报
回复
举个ANR完整的例子



ERROR/ActivityManager(2099): ANR in com.android.launcher(com.android.launcher/com.android.launcher2.launcher)

ERROR/ActivityManager(2099): Reason:keyDispatchingTimeOut
ERROR/ActivityManager(2099): Load 8.94/5.62/2.83
ERROR/ActivityManager(2099): CPU usage from 12750ms to 1460ms ago:
ERROR/ActivityManager(2099): 92% 2032/MAP100serial:17% user + 75% kernel
ERROR/ActivityManager(2099): 4.7% 2417/com.android.myApp:2.8% user + 1.9% kernel
ERROR/ActivityManager(2099): 1.1% 2099/system_server:0.6% user + 0.5% kernel /faults:66 minor
ERROR/ActivityManager(2099): 0.7% 4/events/0:0.0% user + 0.7% kernel
ERROR/ActivityManager(2099): 0% 2172/com.android.inputmethod.latin:0% user + 0% kernel
ERROR/ActivityManager(2099): 0% 2268/wpa_supplicant:0% user + 0% kernel
ERROR/ActivityManager(2099): 0% 2493/com.android.browser:0% user + 0% kernel /faults:12 minor
ERROR/ActivityManager(2099): 100% TOTAL:20% user + 79% kernel


ERROR/ActivityManager(2099): CPU usage from 334ms to 848ms later:
ERROR/ActivityManager(2099): 92% 2032/MAP100serial:15% user + 76% kernel
ERROR/ActivityManager(2099): 92% 2044/MAP100serial:15% user + 76% kernel

ERROR/ActivityManager(2099): 3.9% 2417/com.android.myApp:3.9% user + 0% kernel
ERROR/ActivityManager(2099): 1.9% 2435/com.android.myApp:1.9% user + 0% kernel
ERROR/ActivityManager(2099): 1.9% 2492/com.android.myApp:1.9% user + 0% kernel
ERROR/ActivityManager(2099): 1.9% 2099/system_server:0% user + 1.9% kernel
ERROR/ActivityManager(2099): 1.9% 2100/HeapWorker:1.9% user + 0% kernel
ERROR/ActivityManager(2099): 1.9% 2131/InputDispatcher:0% user + 1.9% kernel
ERROR/ActivityManager(2099): 100% TOTAL:19% user + 80% kernel








qthsrs232 2012-03-15
  • 打赏
  • 举报
回复
避免Android开发中的ANR
http://blog.csdn.net/xqhrs232/article/details/7350815


Android ANR keyDispatchingTimedOut Error 之 Painless Threading http://blog.csdn.net/wwang196988/article/details/6786764

浅谈ANR及如何分析解决ANR
http://www.360doc.com/content/12/0226/15/7635_189765894.shtml

浅谈ANR及如何分析解决ANR(2)
http://www.360doc.com/content/11/1026/11/5600807_159283573.shtml


android-writing-zippy-android-apps.pdf
http://dl.google.com/googleio/2010/android-writing-zippy-android-apps.pdf






念茜 2012-03-15
  • 打赏
  • 举报
回复
xqhrs232 总转好帖!
xqhrs232 2012-03-15
  • 打赏
  • 举报
回复
[转]Android最佳实践之响应灵敏性
http://blog.chinaunix.net/space.php?uid=20783399&do=blog&id=1845036


######################################Android ANR分析15:59:37 I/ActivityManager(130): ANR in process: com.android.email (last in com.android.email)

=>frameworks\base\services\java\com\android\server\am\ActivityManagerService.java
=>提示输出cpu信息

Annotation: keyDispatchingTimedOut
CPU usage:

=>frameworks\base\services\java\com\android\server\ProcessStats.java
=>输出cpu当前状态

=>/proc/loadavg 显示cpu负荷
=>1-分钟平均负载 / 5-分钟平均负载 / 15-分钟平均负载
Load: 4.37 / 4.55 / 3.97
=>cpu状态的时间段
CPU usage from 10987ms to 27ms ago:

=>/proc/state读取cpu的使用情况
=>http://linux.die.net/man/5/proc
=>user
=>kernel
=>iowait
=>irq -> 0
=>softirq -> 0
=>minor

The number of minor faults the process has made which have not required loading a memory page from disk.

=>major

The number of major faults the process has made which have required loading a memory page from disk.
system_server: 12% = 4% user + 7% kernel / faults: 1886 minor
m.android.email: 12% = 6% user + 5% kernel / faults: 2716 minor
sensorserver_ya: 7% = 0% user + 7% kernel
breeze.launcher: 3% = 0% user + 3% kernel / faults: 94 minor
ocess.msn.shell: 0% = 0% user + 0% kernel / faults: 38 minor
m.android.phone: 0% = 0% user + 0% kernel
alog: 0% = 0% user + 0% kernel
rpcrotuer_smd_x: 0% = 0% user + 0% kernel
rild: 0% = 0% user + 0% kernel
alog: 0% = 0% user + 0% kernel
events/0: 0% = 0% user + 0% kernel
port-bridge: 0% = 0% user + 0% kernel
TOTAL: 81% = 13% user + 25% kernel + 42% iowait


15:59:37 I/ActivityManager(130): Removing old ANR trace file from /data/anr/traces.txt



xqhrs232 2012-03-15
  • 打赏
  • 举报
回复
分析你的Android ANR错误
http://www.android123.com.cn/androidkaifa/794.html

Android 通过ANR来查看死锁
http://www.eoeandroid.com/code/2011/1220/446.html

xqhrs232 2012-03-15
  • 打赏
  • 举报
回复
Android中对Log日志文件的分析
http://blog.csdn.net/xqhrs232/article/details/7306895



定位到关键的事件信息如下:
01-1516:49:02.433 E/ActivityManager( 2466): ANR in com.android.mms(com.android.mms/.ui.SlideshowActivity)
01-1516:49:02.433 E/ActivityManager( 2466): Reason:keyDispatchingTimedOut
01-1516:49:02.433 E/ActivityManager( 2466): Load: 0.6 / 0.61 / 0.42
01-1516:49:02.433 E/ActivityManager( 2466): CPU usage from 1337225ms to57ms ago:
01-1516:49:02.433 E/ActivityManager( 2466): sensorserver_ya:8% = 0% user + 8% kernel / faults: 40 minor
......


01-1516:49:02.433 E/ActivityManager( 2466): -com.android.mms:0% = 0% user + 0% kernel
01-1516:49:02.433 E/ActivityManager( 2466): -flush-179:8: 0% =0% user + 0% kernel
01-1516:49:02.433 E/ActivityManager( 2466): TOTAL: 25% = 10% user + 14%kernel + 0% iowait + 0% irq + 0% softirq
01-1516:49:02.436 I/ ( 2466):dumpmesg >"/data/log/dumpstate_app_anr.log"


我们用自然语言来描述一下日志,这也算是一种能力吧。
01-1516:49:02.433 E/ActivityManager( 2466): ANR in com.android.mms(com.android.mms/.ui.SlideshowActivity)
翻译:在16:49分2秒433毫秒的时候ActivityManager(进程号为2466)发生了如下错误:com.android.mms包下面的.ui.SlideshowActivity无响应。

01-1516:49:02.433 E/ActivityManager( 2466): Reason:keyDispatchingTimedOut
翻译:原因,keyDispatchingTimeOut-按键分配超时

01-1516:49:02.433 E/ActivityManager( 2466): Load: 0.6 / 0.61 /0.42
翻译:5分钟,10分钟,15分钟内的平均负载分别为:0.6, 0.61 ,0.42



80,360

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧