原文链接:New bugreport analysis tool released as open source
在安卓开发过程中,是否经常会遇到 Application Not Responding (ANR)
信息和崩溃信息?这些信息都记录在bugreport文件中,但是信息繁杂,我们该如何准确筛选需要的信息呢?这需要使用到ChkBugReport来辅助分析。
下载地址:https://github.com/sonyxperiadev/ChkBugReport/downloads
如何使用
把jar文件下载下来。
从手机中导出bugreport文件
1 | adb shell bugreport > bugreport.txt |
之后运行ChkBugReport:
1 | java –jar chkbugreport.jar bugreport.txt |
执行之后将生成html文件。
了解ChkBugReport的输出
bugreport文件包括了几部分,每一部分都是一个文件的内容拷贝(例如/data/system/packages.xml
)、一个应用的输出(例如top
)或者是一个服务的堆栈(例如window manager service
)。
ChkBugReport解析该文件并分成几个部分,方便用户快速找到想要分析的部分。这些部分会保存在bugreport_out/raw
,以便用户方便找到。
作为第二步,工具执行一系列的build-in插件,负责运行一个或者几个分析的部分。这些插件的输出会保存到报告里分开的章节中,最终保存为一个html文件。在浏览器中打开index.html
,就可以开始分析bugreport了。
插件还可以检测错误。例如,系统日志分析可以找到ANR报告。这些都被归纳到Errors
部分中,可以方便找到。
每个插件会提供每个进程的片段,叫Processes
。这样,你可以找到某个特定进程的所有信息(内存使用, 系统日志等等)。
现在,ChkBugReport有实现如下插件
- BatteryInfoPlugin —- 提取电量使用信息并画出消耗图表。
- CpuFreqPlugin —- 展示CPU支持的频率,以及它们的使用时间。
- SystemLogPlugin, MainLogPlugin 以及 EventLogPlugin —- 这些插件分别提取下面几部分的信息:
- GC日志的内存使用
- 数据库和ContentProvider的时间数据
- 进程和服务生命周期图表
- 崩溃和ANR
- 配置修改
- Activitiy启动
- FTracePlugin —- 如果FTrace功能在内核中可用,Android bugreport工具则支持保存追溯缓冲。插件可以分析追溯和建立统计并归纳成图表。例如,展示哪一个线程在运行以及等待时长。并且会保存VCD格式的信息,所以我们可以使用GtkWave分析追溯信息
- MemPlugin —- 从不同的资源中提取内存使用
- StackTracePlugin —- 分析栈追溯并且侦测一些程序错误(例如,尝试在主线程建立网络连接)。
- SurfaceFlingerPlugin —- 层级可视化
- WindowManagerPlugin —- 重构窗口列表
这是ChkBugReport功能的一个例子,这个工具从bugreport提取了很多有价值的信息。我们会不断在Github上增加新功能,会逐个解释功能。我们也会在ChkBugReport forum threadXDA论坛更新。
更多资料:
- 从ChkBugReport forum thread获取最新更新
- 下载ChkBugReport源代码
- Wiki: https://github.com/sonyxperiadev/ChkBugReport/wiki/
- 安装指导
- 阅读FTRACE功能
- GtkWave
- 学习更多关于GC–Garbage Collection