[gitbook] Android框架分析系列之Android traces.txt文件

本文详细解析了Android系统中traces.txt文件的生成原因,包括应用响应慢、ANR(Application Not Responding)以及WatchDog监控。traces.txt文件在开发阶段对分析性能和定位问题至关重要,涉及logAppTooSlow、appNotResponding和WatchDog的运行逻辑。同时介绍了DropBox服务如何处理这些traces信息并生成dropbox文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请支持作者原创:

https://mr-cao.gitbooks.io/android/content/android-traces.html点击打开链接


Android traces.txt文件分析


Table of Contents

Android的traces.txt文件记录了进程的堆栈情况,对于分析应用响应慢,以及ANR的原因很有帮助。traces.txt文件的位置位于/data/anr/

1. traces.txt文件的生成

traces.txt文件会在三种场景下生成:

  • 应用响应慢

  • 发生ANR

  • WatchDog的监视没有得到回馈

1.1. logAppTooSlow

对于应用响应慢的情况有:

  • Activity执行protected void onPause()方法超时.Android规定的pause响应时间为500毫秒:static final int PAUSE_TIMEOUT = 500;,这个定义位于frameworks/base/services/java/com/android/server/am/ActivityStack.java

  • Activity启动慢。在ActivityManagerService 启动一个Activity的时候,就会开启定时器,如果500毫秒还没有启动完毕,就会调用logAppTooSlow方法

但是值得注意的是,logAppTooSlow只用于开发版本,在正式的release是不会产生app slow的traces文件的。

final void logAppTooSlow(ProcessRecord app, long startTime, String msg) {
    if (true || IS_USER_BUILD) {
        return;
    }
    ……
}

因为在logAppTooSlow的方法开头,就直接返回了,所以需要我们修改这个判断条件,让代码能够顺利的执行。由此可见,判断app执行过慢,是开发阶段的事情。这也为在开发阶段解决系统性能提供了一个手段。logAppTooSlow的trace信息保存在slowxx.txt文件中,xx代表编号,从01一直到08,最多有9个这样的文件。

logAppTooSlow的运行逻辑:

  • 首先判断/data/anr/traces.txt是否存在,如果存在就将其更名为临时文件/data/anr/__temp__

  • 然后调用dumpStackTraces往/data/anr/traces.txt文件中写入traces信息

  • 对/data/anr目录下面已经存在的文件进行移位覆盖。比如原先目录下面有一个文件࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值