Android 中提供了几种用来分析异常情况的跟踪文件,了解它们对于设计和开发测试问题数据是有必要的
ANR trace
当应用层出现事件“不响应”的情况(通常是 UI ,广播或者 Service 中一定时间内没有执行完程序时)会出现 ANR,这时在 logcat 中会产生这样的内容,并且在 /data/anr 目录下会生成一个 anr 文件,里面记录了发生问题的 package 以及用于分析问题的信息,我们通过统计该文件的数量,可以得知在一定时间内发生了多少这类异常,可以作为应用性能指标项对应用进行评估,通常配合压力测试和性能稳定性测试进行
TombStones trace
当 Native 层发生异常导致应用,服务崩溃时,会在 /data/tomnbstones 目录下产生 trace 文件,用来记录这次崩溃的具体信息。包括 pid,tid,以及 native 层的堆栈信息。分析这样的内容需要借助诸如 addr2line 等,一般人看到这样的内容都觉得晦涩难懂。当 tombstones 发生在 system_server 上时会引起系统重启现象,这是比较严重的
app Crash
这个是比较常见的,当应用层没有捕获到异常或者发生 Error 时会直接产生这样的内容,同时应用被强制关闭了。错误信息在 logcat 中就会有记录,使用 logcat -b crash 能直接筛选这样的信息
dropbox trace
以上的异常发生时,都会同步产生一个 dropbox 记录,在 /data/system/dropbox 下。文件名中会以 anr,tombstone 或者 crash 作区分。并且 dropbox 中的信息回更加准确。比如有时候 anr 文件在记录时相关进程已经 kill 掉,该文件中记录的 package 会不准确,这时查询 dropbox 中才是准确的内容