BugReport 分析利器 ChkBugReport 一、ChkBugReport 概述 二、ChkBugReport 获取方法 三、ChkBugReport 使用方法 四、ChkBugReport 使用详细说明 文件格式 Android版 数据表格排序 分析日志

https://www.jianshu.com/p/9c4a8642ccbf

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、ChkBugReport 概述
二、ChkBugReport 获取方法
三、ChkBugReport 使用方法
四、ChkBugReport 使用详细说明

ChkBugReport 工具的目的是分析处理手机上生成的bugreport,并且为开发者提取尽可能多的有用数据。

ChkBugReport 解析 bugreport 后会生成一个bugreport_out文件。然后我们通过点击Bugreport 生成的解析索引 index.html既可以查看解析的内容。

 
BugReport 分析利器 ChkBugReport
一、ChkBugReport 概述
二、ChkBugReport 获取方法
三、ChkBugReport 使用方法
四、ChkBugReport 使用详细说明

文件格式

Android版

数据表格排序

分析日志
ChkBugReport 解析 bugreport 后会生成一个bugreport_out文件

 
BugReport 分析利器 ChkBugReport
一、ChkBugReport 概述
二、ChkBugReport 获取方法
三、ChkBugReport 使用方法
四、ChkBugReport 使用详细说明

文件格式

Android版

数据表格排序

分析日志
Bugreport 生成的解析索引

二、ChkBugReport 获取方法

1. github上源代码:

git clone git://github.com/sonyxperiadev/ChkBugReport.git

2. 预编译的二进制文件:

注意:
预编译的二进制文件可能比源代码更旧,因此要获取最新版本,请改用源代码。

3. 源代码打包最新Jar 包方法

源代码打包最新 chkbugreport-0.5-216.jar 包方法如下:

// 下载 ChkBugReport  源码
wangjie@wangjie:/wangjie/ChkBugReport$git clone git://github.com/sonyxperiadev/ChkBugReport.git
... ... //成功下载 ChkBugReport  源码
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ./createjar.sh 
// 如果 linux 服务器没有安装 ant ,请安装 sudo apt install ant
Command 'ant' not found, but can be installed with:

sudo apt install ant

wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ sudo apt  install ant
Reading package lists... Done
Building dependency tree       
 
 ... ... 
 //成功安装 ant
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Setting up ant-optional (1.10.5-3~18.04) ...
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ./createjar.sh 
Buildfile: /wangjie/ChkBugReport/ChkBugReport/core/createjar.xml

create_run_jar:
     [echo] Cleanup up the bin dir...
    [mkdir] Created dir: /wangjie/ChkBugReport/ChkBugReport/core/bin
 ... ...
     [echo] Done!
//成功打包 最新版本的jar包
BUILD SUCCESSFUL
Total time: 3 seconds
wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ ls
bin  chkbugreport  chkbugreport-0.5-216.jar  ... ...

三、ChkBugReport 使用方法

ChkBugReport 没有安装程序,要安装它,您只需下载最新的chkbugreport-.jar(请参阅步骤二)或从源代码中自行*构建。注意:“ 代码/下载”部分已由GitHub删除。

1.抓取Bugreport

首先我们要有bugreport,抓取Bugreport的命令: adb bugreport bugreport.zip
抓取bugreport 方法举例如下:


C:UsersAdministratorChkBugReport1>adb bugreport bugreport.zip
[  22%] generating bugreport.zip      
data/user_de/0/com.android.shell/files/bugreports/bugreport-T5542-PKQ1.190601.001-2019-12-04-17-04-52.zip: 1 file pulled. 3.8 MB/s (1685410 bytes in 0.420s)                           
C:UsersAdministratorChkBugReport1>

2.解析Bugreport

解析 Bugreport,首先我们将抓取的 bugreport.zip,解压抽取出 bugreport.txt,然后将chkbugreport.jar bugreport.txt 两个文件放在同一个文件夹下,然后执行java -jar chkbugreport.jar bugreport.txt

解析bugreport 方法使用举例如下:


C:UsersAdministratorChkBugReport1>dir
... ...

2019/11/24  15:36        16,283,036 bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt
2019/12/03  10:51         2,494,186 bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.zip
2019/12/04  16:36           948,643 chkbugreport-0.5-216.jar
... ...

C:UsersAdministratorChkBugReport1>java -jar chkbugreport-0.5-216.jar bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt

... ...

Writing chapter: eventlog_10137.html...
Writing chapter: eventlog_10128.html...
Writing frameset...
DONE!

C:UsersAdministratorChkBugReport1>

3.查看index.html

解析完成后,我们点击解析文件夹中的index文件,进行查看分析。
解析生成的主要包含:Errors 、Memory info、 System log、 kernel log、 Event log 、Battery info 、AlarmManager 、ActivityManager、 Process等

 
BugReport 分析利器 ChkBugReport
一、ChkBugReport 概述
二、ChkBugReport 获取方法
三、ChkBugReport 使用方法
四、ChkBugReport 使用详细说明

文件格式

Android版

数据表格排序

分析日志
通过浏览器查看 解析生成的index文件

四、ChkBugReport 使用详细说明

1.ChkBugReport 快速使用指南

只需运行将bugreport作为参数传递的工具即可。

我使用包装器脚本,将这两个脚本(包装器脚本“ chkbugreport ”和jar文件“ chkbugreport.jar”)复制到$ HOME / bin /,因此可以在计算机上的任何位置使用它:

$ chkbugreport thebugreport.txt

但是当然您也可以使用jar文件:

$ java -jar path/to/chkbugreport.jar thebugreport.txt

Bugreport 可以压缩(如.gz或zip文件形式)或纯文本文件。该工具将创建一个文件夹(带有输入文件名和后缀“ _out”后缀),并在该文件夹下创建所有文件(以及一些子文件夹)。您应该从该文件夹中打开“ index.html”文件(强烈建议使用Chrome或Firefox)。

如果没有Bugreport ,请创建一个:

$ adb bugreport > bugreport.txt

同样,如果您只有一部分Bugreport (例如日志或堆栈跟踪),则仍然可以使用此工具。假设您有一个系统日志和一个包含进程堆栈跟踪的文件(例如,取自/data/anr/traces.txt),则可以使用如下工具:

$ chkbugreport -sl:the_system_log.txt -sa:traces.txt dummy

这将在名为“ dummy_out”的文件夹中生成输出(假定“ dummy”是不存在的Bugreport 的名称)。

请注意,chkbugreport具有附加功能:它可以处理为traceview创建的概要分析数据。结果将类似:一个包含一堆html和图像文件的文件夹。要将其与跟踪文件一起使用,请在命令行上添加“ -t”选项:

$ chkbugreport -t something.prof

您可以像下面这样生成分析数据:

  • 使用“ adb shell ps”列出所有进程并找到要跟踪的进程的PID
  • 执行“ adb shell am profile PID start /data/profile.dat”以开始分析(将PID替换为进程ID号)
  • 做测试
  • 执行“ adb shell am profile PID停止”以停止分析(将PID替换为进程ID号)
  • 使用“ adb pull /data/profile.dat”拉出文件并将其从手机中删除(以节省宝贵的磁盘空间):“ adb shell rm /data/profile.dat”
  • 创建报告“ chkbugreport -t profile.dat”

2. ChkBugReport 命令行参数说明

要获取完整的参数列表,只需运行不带任何参数的工具即可。到目前为止,已处理以下参数:

-ds:file-将文件用作dumsys输出(与-pb几乎相同)
-el:file-使用文件作为事件日志
-ft:file-将文件用作ftrace转储
-ml:file-使用文件作为主日志
-mo:file-解析猴子输出并从中提取堆栈跟踪
-pb:file-加载部分Bugreport (例如dumpsys的输出)
-pk:file-加载packages.xml文件
-ps:file-将文件用作“进程”部分
-pt:file-将文件用作“进程和线程”部分
-sa:file-将文件用作“最后一个vm跟踪”部分
-sl:file-使用文件作为系统日志
-sn:file-将文件用作“刚才的vm跟踪”部分
-sd:dir-从目录中加载文件作为部分Bugreport
-uh:file-加载Usage-history.xml文件
附加选项(较少使用):

--browser-完成后启动浏览器
--gui-如果未提供文件名,则启动图形用户界面
--silent-抑制除致命错误以外的所有输出
--limit-限制输入文件的大小(默认)(例如),如果使用-sl选项,则日志文件如果太长会被截断(因为生成的html会更大)。此选项(以及--no-limit)必须在其他选项之前才能生效。
--no-limit-不限制输入文件的大小
注意:图形用户界面仍处于试验阶段,非常基础。

3.ChkBugReport 使用方法小tip

通过简单地添加--browser参数,chkbugreport将尝试在默认浏览器中打开结果。您可以通过将openBrowser = true添加到〜/ .chkbugreport(如果需要,创建文件)来将其设置为默认行为。

文件格式

ChkBugReport尝试在文件格式方面尽可能地灵活:

  • 它应该支持任何行尾(甚至是疯狂的行尾,例如0x0d 0x0d)
  • 它应该处理压缩的Bugreport
  • 它应该处理压缩的Bugreport (它将扫描zip以查找第一个看起来像Bugreport 的文件)

Android版

请注意,Bugreport 的格式随每个Android版本而变化,因此某些版本可能不完全受支持。另外,内容(即保存哪些数据)因电话而异,因此可能会丢失某些信息。

数据表格排序

一些表支持排序:如果表前有这样的提示,则可以单击列以按字母顺序对数据进行排序。您可以按住Shift键对多列进行排序。

其他一些表可能支持重新排序(表之前会有提示/注释),在这种情况下,您可以拖动行并将其上下移动。

某些表格的数据也将导出为CSV(逗号分隔值)文件,在这种情况下,您可以在excel或Open Office中打开它们,并进行自己的统计/过滤/排序/等操作。

如果ChkBugReport可以在类路径中找到sqlite jdbc驱动程序(例如sqlitejdbc-v056.jar),那么某些表的数据(以及一些其他数据,例如stacktraces)也将被导入到新创建的SQLite数据库中。

分析日志

您不需要完整的Bugreport 即可使用此工具。您可以从市场上下载记录器应用程序,该应用程序将持续将系统/主/事件日志保存在sdcard中。这样,您可以获取几个小时的使用情况数据。

当您要处理日志时,请从sdcard中提取日志并执行:

$ chkbugreport dummy --no-limit -sl:systemlog.txt -el:eventlog.txt

  • 所述参数只用于产生一个输出文件名
  • --no极限告诉chkbugreport不trunkate日志文件。缺省情况下,chkbugreport会中继大于1MB的日志文件,以避免生成过多的报告(或耗尽内存)。如果崩溃/异常位于日志末尾,有时这也是您想要的。但是,在这种情况下,我们要处理整个日志文件。
  • -sl:文件参数将加载系统/主日志。如果主日志位于单独的文件中,则可以使用-ml:file加载它
  • -el:文件参数将加载事件日志

当然,由于缺少许多信息(例如,进程的名称),因此生成的报告将受到更大的限制,因此chkbugreport会尝试猜测它可以做什么。但是,即使仅从日志中也可以提取许多信息,例如电池使用情况



作者:ProgramAndroid
链接:https://www.jianshu.com/p/9c4a8642ccbf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。