ANR traces文档解析

一、前言

此文主要记录发生ANR时生成的traces.txt文档,便于记忆分析。

ANR中的traces.txt文档是利用了Linux信号机制,APP监听到主线程卡顿的时候,进程便会发送SIGQUIT的信号,然后作为相对应的操作,生成日志。所以通过以下命令,向进程发送信号,也会有同样的效果。

adb shell kill -3 [pid]

二、traces.txt

以下是简略的traces.txt文件:

----- pid 1528 at 2019-07-22 15:12:00 -----
Cmd line: com.idata.mdm
Build fingerprint: 'alps/full_bd6737t_35g_a_m0/bd6737t_35g_a_m0:6.0/MRA58K/1528710497:user/dev-keys'
ABI: 'arm'
Build type: optimized
Zygote loaded classes=4112 post zygote classes=133
Intern table: 59969 strong; 17 weak
JNI: CheckJNI is off; globals=311 (plus 360 weak)

.......

Total time spent in GC: 3.346s
// GC的吞吐量
Mean GC size throughput: 50MB/s  
Mean GC object throughput: 674461 objects/s
Total number of allocations 2303118
Total bytes allocated 177MB
Total bytes freed 168MB
Free memory 303KB
Free memory until GC 303KB
Free memory until OOME 118MB
Total memory 9MB
Max memory 128MB
Zygote space size 2MB
Total mutator paused time: 143.861ms
Total time waiting for GC to complete: 693.458us
// GC发生的次数
Total GC count: 190
// GC消耗的时间
Total GC time: 3.346s
// 阻塞GC发生的次数 阻塞GC执行之时会暂停其他的线程
Total blocking GC count: 0
// 阻塞GC消耗的时间
Total blocking GC time: 0
Histogram of GC count per 10000 ms: 0:36478,1:126,3:4,4:10,5:1,6:1
Histogram of blocking GC count per 10000 ms: 0:36620

// main 代表线程名称
// prio = 优先级  
// Native = 代表当前线程的状态,Native代表执行JNI代码
"main" prio=5 tid=1 Native
//group是线程组名称 sCount是线程被挂起的次数 dsCount是线程调试状态下挂起的次数
//obj是这个线程的Java对象的地址 self表是这个线程Native的地址。
  | group="main" sCount=1 dsCount=0 obj=0x758f72e8 self=0xb7ce4b78
// sysTid 是此线程在内核中对应的线程ID 
// nice 代表着struct_task任务被调度的优先级
// cgrp是调度组 sched分别是线程的调度策略和优先级 handle是线程的处理函数地址。
  | sysTid=1528 nice=0 cgrp=default sched=0/0 handle=0xb6f80de4
//state = native 线程状态 schedstat值来自于/proc/[pid]/task/[tid]/schedstat,分别是cpu上执行的时间、线程的等待时间和线程执行的时间片
// utm是线程用户态下执行时间 stm是内核态下执行时间(单位是jiffies)  HZ可推出执行时间 stm = 747*1000/100
  | state=S schedstat=( 31041259455 5111094667 27821 ) utm=2357 stm=747 core=0 HZ=100
  | stack=0xbe3a6000-0xbe3a8000 stackSize=8MB
  | held mutexes=
  at android.os.MessageQueue.nativePollOnce(Native method)
  at android.os.MessageQueue.next(MessageQueue.java:328)
  at android.os.Looper.loop(Looper.java:164)
  at android.app.ActivityThread.main(ActivityThread.java:5765)
  at java.lang.reflect.Method.invoke!(Native method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

三、线程模型及线程状态

对于上述线程状态,相对于java线程状态,Linux细化了很多状态,这样更便于分析当前的状态。

java中的线程和操作系统内核中的线程并不是等价关系。他们之间存在着映射关系,对Android来说,java中的线程和内核的线程是一对一关系。


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

推荐阅读更多精彩内容

  • 1.一个进程对应一个应用程序2.多进程有什么作用?单进程的计算机只能做一件事计算机的CPU是能在某个时间点上做一件...
    dgg99阅读 142评论 0 1
  • Java学习路线 简单学了遍Java,发现Java其实还是要学习很多东西的,有些也比较难以理解,简单整理了下,为第...
    小菜小半碟阅读 198评论 0 1
  • Android系统每次发生ANR后,都会在/data/anr/目录下面输出一个traces.txt文件,这个文件记...
    HuangTao_Zoey阅读 30,216评论 2 49
  • 文 ‖ 爱码字的小仙女儿 先分享一首木心的《从前慢》。 记得早先少年时,大家诚诚恳恳,说一句是一句...
    Ai咘咘咘阅读 740评论 0 2
  • 看到好多人的名字后都有一个红色的叹号,点开后才知道是日更达人的图标。 似乎这个图标是一种身份的象征,看看自己名字后...
    冷榆阅读 471评论 9 12