ANR 记录

参考:

http://rayleeya.iteye.com/blog/1955652
https://codezjx.github.io/2017/08/06/anr-trace-analytics/

如何导出 /data/anr/traces.txt文件

先在c盘中建立好1.txt文件;
执行导出anr日志命令:
adb pull /data/anr/traces.txt C:/1.txt

记录anr日志,可通过以下开源框架

https://github.com/SalomonBrys/ANR-WatchDog

说明:
关于ANR traces的保存时长:
traces.txt:只保留最近一次发生ANR时的信息,位置:/data/anr/traces.txt
DropBox:会保留历史上发生的所有ANR的logs,位置:/data/system/dropbox,保存时长3天;

1. 卡住主线程分析例子

1. 1创建一个主线程的耗时操作

 Toast.makeText(getApplicationContext(), "卡死UI", Toast.LENGTH_SHORT).show();
        SystemClock.sleep(10 * 10000);

1.2 logcat 中的打印

基本上,可以看到问题所在,那就是 reason

PID: 25719
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 17. Wait queue head age: 8816.9ms.)
Load: 28.45 / 28.73 / 28.92
CPU usage from 103375ms to 0ms ago (2017-11-13 16:48:13.231 to 2017-11-13 16:49:56.606) with 99% awake:
5.5% 1264/system_server: 3.9% user + 1.5% kernel / faults: 1300 minor
5.1% 442/surfaceflinger: 2.5% user + 2.6% kernel / faults: 526 minor
2.9% 1519/com.android.systemui: 2.5% user + 0.4% kernel / faults: 1186 minor
2.2% 624/cameraserver: 0.9% user + 1.3% kernel

1.3 traces 文件说明

  1. 介于----- pid 0000 xxx -----与----- end 0000 -----之间的为进程0000的所有线程堆栈信息;
  2. "main" prio=5 tid=1 Sleeping 分为为线程名、线程优先级(默认值5)、线程ID、线程状态;主线程之后会接着打印进程中其他线程的信息;

// 开头显示进程号、ANR发生的时间点和进程名称
----- pid 25719 at 2017-11-13 16:49:56 -----
Cmd line: better.anr
Build fingerprint: 'HUAWEI/NXT-AL10/HWNXT:7.0/HUAWEINXT-AL10/C00B592:user/release-keys'
ABI: 'arm64'
Build type: optimized
Zygote loaded classes=4418 post zygote classes=508
Intern table: 77119 strong; 174 weak
JNI: CheckJNI is off; globals=502 (plus 124 weak)
Libraries: /system/lib64/libandroid.so /system/lib64/libcompiler_rt.so /system/lib64/libhwaps.so /system/lib64/libjavacrypto.so /system/lib64/libjnigraphics.so /system/lib64/libmedia_jni.so /system/lib64/libwebviewchromium_loader.so libjavacore.so libopenjdk.so (9)
Heap: 28% free, 4MB/6MB; 32412 objects
Dumping cumulative Gc timings
Start Dumping histograms for 1 iterations for partial concurrent mark sweep
.....

还有很多信息
.....
直接定位到这里
//依次是:线程名、线程优先级、线程创建时的序号、线程当前状态
"main" prio=5 tid=1 Sleeping
//依次是:线程组名称、suspendCount、debugSuspendCount、线程的Java对象地址、线程的Native对象地址
| group="main" sCount=1 dsCount=0 obj=0x785d3dd0 self=0x7d2d8a1a00
//sysTid是线程号,主线程的线程号和进程号相同
| sysTid=25719 nice=-10 cgrp=default sched=0/0 handle=0x7d319e3a98
| state=S schedstat=( 374569801 11467189 513 ) utm=31 stm=6 core=2 HZ=100
| stack=0x7ff8020000-0x7ff8022000 stackSize=8MB
| held mutexes=
at java.lang.Thread.sleep!(Native method)
-sleeping on <0x0a871b14> (a java.lang.Object)
at java.lang.Thread.sleep(Thread.java:379)
-locked <0x0a871b14> (a java.lang.Object)
at java.lang.Thread.sleep(Thread.java:321)
at android.os.SystemClock.sleep(SystemClock.java:120)
at better.anr.MainActivity.anrMainThread(MainActivity.java:33)
at better.anr.MainActivity.onClick(MainActivity.java:25)
at android.view.View.performClick(View.java:5646)
at android.view.View$PerformClick.run(View.java:22459)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
.....
还有很多信息
.....
----- end 25719 -----

2. 另外一个例子 dispatching timeout

logcat 打印如下:

Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • ANR问题,相信是每位开发日常都会遇到的问题,对于这类问题的分析,按照官方的推荐,或网络博客的总结思路能解决一定的...
    tiger桂阅读 17,830评论 5 28
  • ==================================================== 一:什么...
    爱情小傻蛋阅读 9,705评论 3 31
  • 什么是ANR ANR(Application Not Responding)就是应用在规定的时间内没有响应用户输入...
    lbtrace阅读 3,366评论 3 9
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 3,854评论 2 8
  • Log 在Android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android...
    雷哥说阅读 927评论 0 6