美女程序媛发福利,读懂ANR的trace文件So easy

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Bugly支持ANR上报后,很多童鞋反馈看不懂上报上来的trace文件,精神哥很担忧,因为读懂trace文件是分析ANR问题的最关键的一步。
Trace文件是个什么鬼?
App的进程发生ANR时,系统让活跃的Top进程都进行了一下dump,进程中的各种Thread就都dump到这个trace文件里了,所以trace文件中包含了每一条线程的运行时状态。
刚好我们的美女攻城狮sunny(邹灵灵)最近收集了这块的内容,下面给大家详细介绍Thread Dump到底是个什么鬼,相信看完的童鞋,读懂trace文件就So easy了!


一、java线程的状态转换介绍



1.1新建状态(New)


用new语句创建的线程处于新建状态,此时它和其他Java对象一样,仅仅在堆区中被分配了内存。


1.2就绪状态(Runnable)


当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态,Java虚拟机会为它创建方法调用栈和程序计数器。处于这个状态的线程位于可运行池中,等待获得CPU的使用权。


1.3运行状态(Running)


处于这个状态的线程占用CPU,执行程序代码。只有处于就绪状态的线程才有机会转到运行状态。


1.4阻塞状态(Blocked)


阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,Ja

Android ANR Trace日志阅读分析技巧 Trace日志是指ANR目录下的一份txt文件,Trace日志用于分析应用ANR无响应的问题,,Trace日志的三个关键组成Heap部分、垃圾回收器histograms部分、Thread部分。 阅读详情

相关推荐

Android ANR分析

Android ANR分析 什么时候会出现ANR 1keyDispatchTimeout input事件5秒内没有处理完生了ANR Logcat 关键字, input event dispatching timed out 2 broadcastTimeout 前台广播,onReceiver 10s 内没有处理完ANR 后台广播,onReceiver 60s 呢没有处理完ANR Logcat 关键字,timeout of boradcast BroadcastRecord 3 ServiceTim

a136447572的专栏 510

Android ANR详解

然后​InputDispatcher​开始了第一轮的事件分,此时并没有正在处理的事件,因此​InputDispatcher​从​inBoundQueue​队列头部取出事件,并重置ANR的计时,并检查窗口是否就绪,此时窗口准备就绪,将该事件转移到了​outBoundQueue​队列中,因为应用管道对端连接正常,因此事件从​outBoundQueue​取出,然后放入了​waitQueue​队列,因为​Socket​双向通信已经建立,接下来就是 应用进程 接收到新的事件,然后对其进行分

Dream It Possible 4995

ANR 基本常识分析

当APP不响应、响应慢了、或者WatchDog的监视没有得到回应时,系统就会dump出一个`traces.txt`文件,存放在文件目录:`/data/anr/traces.txt`,通过traces文件,我们可以拿到线程名、堆栈信息、线程当前状态、binder call等信息。当你的项目越做越复杂,或者你的用户达到某个数量级的时候,你的代码不小心出现细小的问题,你会收到各种各样的bug,其中ANR的问题你一定不会陌生。`com.xxxx.moblie` 占用了11%的CPU,其实这并不算多。

kingmasterlife的博客 2123

ANR分析

1.什么是ANR ANR即Application Not Responding,顾名思义就是应用程序无响应。在Android中,一般情况下,四大组件均是工作在主线程中的,Android中的Activity Manager和Window Manager会随时监控应用程序的响应情况,如果因为一些耗时操作(网络请求或者IO操作)造成主线程阻塞一定时间,那么系统就会显示ANR对话框提示用户对应的应用处于无响应状态。 2.为什么会ANR 一句话总结:主线程没有在规定的时间内,做完要做的事情,就会ANR

xxdw1992的博客 3437

Android ANR log trace日志文件分析

如果CUP使用率很低,说明主线程被阻塞了,并且当IOwait很高,可能是主线程在等待I/O操作的完成.traces.txt只保留最后一次ANR的信息,Android系统有个DropBox功能功能,它能记录系统出现的crash错误.因此保留有生过的ANR的信息.(log路径:/data/system/dropbox)应用ANR产生的时候,ActivityManagerService的appNotResponding方法就会被调用,然后在/data/anr/traces.txt文件中写入ANR相关信息.

qq_25330791的博客 2363

ANR logcat&trace文件分析流程

ANR的时候,系统会产生一份anr日志文件(手机的/data/anr 目录下,文件名称可能各厂商不一样,业内大多称呼为trace文件),内含如下几项重要信息。

datian1234的博客 1011

ANR系列之七:ANR问题如何排查

目前,我们大多数的应用都是没有专门接入ANR监控框架的,所以,本文的讲解主要是以借助log和trace的方式进行ANR问题的分析。

分享+记录 6944

ANR 之 Java进程的Trace文件解析

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

2401_86637419的博客 421

路由cpu负载过高检查

我们经常会遇到High CPU的问题,一般来说CPU 分进程高和中断高两种。中断高很多时候是由于实时的流量造成的,要根据网络的实际情况具体分析,原因有很多种,在此不一一列举了。进程高,不同的进程也有不同的root cause。 在比较常见的几种占用CPU资源进程中,有一种叫 IP Input。 在 IOS 中,我们把 SW process 叫做 IP Input 进程,...

weixin_34320724的博客 634

产生ANR后的Trace文件的解析

死锁的分析也是类似,生死锁的线程一般处于MONITOR状态或者WAIT状态,等待其他进程的锁或者monitor,而其他进程又在等待另外线程的锁或者monitor,一直这样依赖下去,直到形成一个环。后面一行group为线程组名称,sCount是线程被挂起的次数,dsCount是线程被调试器挂起的次数。在此后是线程的调度信息:sysTid是Linux下的内核线程ID,nice是线程的调度优先级,sched分别标志了线程的调度策略和优先级,cgrp是调度数组,handle是线程的处理函数地址。

chuyouyinghe的专栏 567

APP卡主很久没响应如何排查?(/data/anr/下有对应日志)

Android App 优化之ANR详解 2018-08-15 08:40 作者:anly_jun https://juejin.im/post/582582df0ce4630058bbbad2 本文由anly_jun原创,已获授权原创首 1, 你碰到ANR了吗 在App使用过程中, 你可能遇到过这样的情况: 恭喜你, 这就是传说中的ANR。 1.1 何为ANR ANR全名Application Not Responding, 也就是"应用无响应". 当操作在一段时间内系统无法.

tony的专栏 1761

腾讯Bugly 最专业的质量跟踪平台(用于跟踪、收集ANR和崩溃)

特别好用:集成特别简单 添加依赖: compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.1.5 在application中进行初始化: @Override public void onCreate() {

陈如水的专栏 4021

linux trace so文件,如何阅读操作系统trace文件

How to interpret OS system traces (文档 ID 1429678.1)修改时间:2013-9-4类型:REFERENCEIn this DocumentPurposeScopeDetailsWhat are system calls:It's all about system callsInvocation of Unix trace commandsLinux:S...

weixin_29133985的博客 213

app如何获取ANR时产生的trace文件

跑了个Demo程序,想把/data/anr/trace.txt文件拿到,然而普通app是无法获取该文件的,就算把手机root也不行。因为不知道进入anr文件的api,就直接使用路径创建文件,同时使用一个可以获取的文件做为对比,说明该刚可行,确实是app拿不到trace.txt。先通过adb,进入app的外部存储路径看看有什么文件: 以ecmsLogger(java).log文件为例,

acxingyun的博客 7525

关于ANR异常捕获与分析,你所需要知道的一切

背景最近项目组需要实现捕获ANR并上传到公司服务器相关的功能,因此花了点时间来整理相关的知识,并从AMS源码与腾讯Bugly-SDK中逆向找到相关思路,在此分享给大家。

大熊的Android开发之旅 1万+

布公告】您的应用卡么?Bugly全新功能:卡顿/ANR监控

亲爱的Bugly用户: 您好~ 腾讯Bugly于7月13日正式布了 iOS卡顿、Android ANR(应用无响应)监控上报功能,业内只此一家,别无分店。 通过卡顿/ANR的异常监控,您可以实时了解用户在使用App过程中生的卡顿/ANR问题,有效提升App的流畅度,欢迎大家接入使用。 Android ANR:精神哥手把手教你如何智斗ANR iOS 卡顿:小萝莉和你聊聊i

腾讯Bugly的专栏 3549

移动端测试(三)-ANR和Crash等常见场景原因说明及处理

ANRANR:Application Not Response,应用无响应。通常情况下,会弹出窗口询问用户选择“强制关闭”或者“继续等待/等一下”。其中, ①选择”强制关闭“则杀掉ANR

qq_40252819的博客 6554
上一篇: 【腾讯bugly干货分享】精神哥手把手教你如何智斗ANR
下一篇: 【移动开发者沙龙 北京站】第二期 报名火热来袭
腾讯Bugly
博客等级 码龄12年 1875粉丝 201原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值