BugReport 分析利器ChkBugReport - 简书

文章推薦指數: 80 %
投票人數:10人

ChkBugReport 工具的目的是分析处理手机上生成的bugreport,并且为开发者提取尽 ... 首先我们要有bugreport,抓取Bugreport的命令: adb bugreport ... BugReport分析利器ChkBugReport和你一起终身学习,这里是程序员Android 本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、ChkBugReport概述 二、ChkBugReport获取方法 三、ChkBugReport使用方法 四、ChkBugReport使用详细说明 一、ChkBugReport概述 ChkBugReport工具的目的是分析处理手机上生成的bugreport,并且为开发者提取尽可能多的有用数据。

ChkBugReport解析bugreport后会生成一个bugreport_out文件。

然后我们通过点击Bugreport生成的解析索引index.html既可以查看解析的内容。

ChkBugReport解析bugreport后会生成一个bugreport_out文件 Bugreport生成的解析索引 二、ChkBugReport获取方法 1.github上源代码: gitclonegit://github.com/sonyxperiadev/ChkBugReport.git 2.预编译的二进制文件: http://sonyxperiadev.github.com/ChkBugReport/download/chkbugreport(启动器shell脚本) http://sonyxperiadev.github.com/ChkBugReport/download/chkbugreport-0.5-215.jar(应用程序本身) 注意: 预编译的二进制文件可能比源代码更旧,因此要获取最新版本,请改用源代码。

3.源代码打包最新Jar包方法 源代码打包最新chkbugreport-0.5-216.jar包方法如下: //下载ChkBugReport源码 wangjie@wangjie:/wangjie/ChkBugReport$gitclonegit://github.com/sonyxperiadev/ChkBugReport.git ......//成功下载ChkBugReport源码 wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$./createjar.sh //如果linux服务器没有安装ant,请安装sudoaptinstallant Command'ant'notfound,butcanbeinstalledwith: sudoaptinstallant wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$sudoaptinstallant Readingpackagelists...Done Buildingdependencytree ...... //成功安装ant Processingtriggersforman-db(2.8.3-2ubuntu0.1)... Settingupant-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]Cleanupupthebindir... [mkdir]Createddir:/wangjie/ChkBugReport/ChkBugReport/core/bin ...... [echo]Done! //成功打包最新版本的jar包 BUILDSUCCESSFUL Totaltime:3seconds wangjie@wangjie:/wangjie/ChkBugReport/ChkBugReport/core$ls binchkbugreportchkbugreport-0.5-216.jar...... 三、ChkBugReport使用方法 ChkBugReport没有安装程序,要安装它,您只需下载最新的chkbugreport-.jar(请参阅步骤二)或从源代码中自行*构建。

注意:“代码/下载”部分已由GitHub删除。

1.抓取Bugreport 首先我们要有bugreport,抓取Bugreport的命令:adbbugreport>bugreport.zip 抓取bugreport方法举例如下: C:\Users\Administrator\ChkBugReport\1>adbbugreportbugreport.zip [22%]generatingbugreport.zip data/user_de/0/com.android.shell/files/bugreports/bugreport-T5542-PKQ1.190601.001-2019-12-04-17-04-52.zip:1filepulled.3.8MB/s(1685410bytesin0.420s) C:\Users\Administrator\ChkBugReport\1> 2.解析Bugreport 解析Bugreport,首先我们将抓取的bugreport.zip,解压抽取出bugreport.txt,然后将chkbugreport.jarbugreport.txt两个文件放在同一个文件夹下,然后执行java-jarchkbugreport.jarbugreport.txt。

解析bugreport方法使用举例如下: C:\Users\Administrator\ChkBugReport\1>dir ...... 2019/11/2415:3616,283,036bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt 2019/12/0310:512,494,186bugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.zip 2019/12/0416:36948,643chkbugreport-0.5-216.jar ...... C:\Users\Administrator\ChkBugReport\1>java-jarchkbugreport-0.5-216.jarbugreport-T5542-PKQ1.190601.001-2019-11-24-15-34-17.txt ...... Writingchapter:eventlog_10137.html... Writingchapter:eventlog_10128.html... Writingframeset... DONE! C:\Users\Administrator\ChkBugReport\1> 3.查看index.html 解析完成后,我们点击解析文件夹中的index文件,进行查看分析。

解析生成的主要包含:Errors、Memoryinfo、Systemlog、kernellog、Eventlog、Batteryinfo、AlarmManager、ActivityManager、Process等 通过浏览器查看解析生成的index文件 异常Crash检测举例: 异常Crash检测举例 四、ChkBugReport使用详细说明 1.ChkBugReport快速使用指南 只需运行将bugreport作为参数传递的工具即可。

我使用包装器脚本,将这两个脚本(包装器脚本“chkbugreport”和jar文件“chkbugreport.jar”)复制到$HOME/bin/,因此可以在计算机上的任何位置使用它: $chkbugreportthebugreport.txt 但是当然您也可以使用jar文件: $java-jarpath/to/chkbugreport.jarthebugreport.txt Bugreport可以压缩(如.gz或zip文件形式)或纯文本文件。

该工具将创建一个文件夹(带有输入文件名和后缀“_out”后缀),并在该文件夹下创建所有文件(以及一些子文件夹)。

您应该从该文件夹中打开“index.html”文件(强烈建议使用Chrome或Firefox)。

如果没有Bugreport,请创建一个: $adbbugreport>bugreport.txt 同样,如果您只有一部分Bugreport(例如日志或堆栈跟踪),则仍然可以使用此工具。

假设您有一个系统日志和一个包含进程堆栈跟踪的文件(例如,取自/data/anr/traces.txt),则可以使用如下工具: $chkbugreport-sl:the_system_log.txt-sa:traces.txtdummy 这将在名为“dummy_out”的文件夹中生成输出(假定“dummy”是不存在的Bugreport的名称)。

请注意,chkbugreport具有附加功能:它可以处理为traceview创建的概要分析数据。

结果将类似:一个包含一堆html和图像文件的文件夹。

要将其与跟踪文件一起使用,请在命令行上添加“-t”选项: $chkbugreport-tsomething.prof 您可以像下面这样生成分析数据: 使用“adbshellps”列出所有进程并找到要跟踪的进程的PID 执行“adbshellamprofilePIDstart/data/profile.dat”以开始分析(将PID替换为进程ID号) 做测试 执行“adbshellamprofilePID停止”以停止分析(将PID替换为进程ID号) 使用“adbpull/data/profile.dat”拉出文件并将其从手机中删除(以节省宝贵的磁盘空间):“adbshellrm/data/profile.dat” 创建报告“chkbugreport-tprofile.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尝试在文件格式方面尽可能地灵活: 它应该支持任何行尾(甚至是疯狂的行尾,例如0x0d0x0d) 它应该处理压缩的Bugreport 它应该处理压缩的Bugreport(它将扫描zip以查找第一个看起来像Bugreport的文件) Android版 请注意,Bugreport的格式随每个Android版本而变化,因此某些版本可能不完全受支持。

另外,内容(即保存哪些数据)因电话而异,因此可能会丢失某些信息。

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

您可以按住Shift键对多列进行排序。

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

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

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

分析日志 您不需要完整的Bugreport即可使用此工具。

您可以从市场上下载记录器应用程序,该应用程序将持续将系统/主/事件日志保存在sdcard中。

这样,您可以获取几个小时的使用情况数据。

当您要处理日志时,请从sdcard中提取日志并执行: $chkbugreportdummy--no-limit-sl:systemlog.txt-el:eventlog.txt 所述伪参数只用于产生一个输出文件名 该--no极限告诉chkbugreport不trunkate日志文件。

缺省情况下,chkbugreport会中继大于1MB的日志文件,以避免生成过多的报告(或耗尽内存)。

如果崩溃/异常位于日志末尾,有时这也是您想要的。

但是,在这种情况下,我们要处理整个日志文件。

该-sl:文件参数将加载系统/主日志。

如果主日志位于单独的文件中,则可以使用-ml:file加载它 该-el:文件参数将加载事件日志 当然,由于缺少许多信息(例如,进程的名称),因此生成的报告将受到更大的限制,因此chkbugreport会尝试猜测它可以做什么。

但是,即使仅从日志中也可以提取许多信息,例如电池使用情况 友情推荐: Android干货分享 至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。

同时期待您的关注,感谢您的阅读,谢谢! 推荐阅读更多精彩内容常用命令Tcp/IP通信也是不安全的,在传输的时候也可能出现漏洞查看正在运行的进程adbshellps-A|g...远远飘着云阅读2,247评论0赞02018-06-11meantoaddtheformatted="false"attribute?.[46%47325/...ProZoom阅读1,880评论0赞3adb常用命令adblogcat命令格式:adblogcat[选项][过滤项],其中选项和过滤项在中括...skyyhu阅读365评论0赞1Android调试桥Android调试桥Android调试桥(adb)是一个通用命令行工具,其允许您与模拟器实例或连接的A...guanjm阅读1,045评论0赞1adbshell常用命令获取编译时间cat/proc/version内核崩溃cat/proc/last_kmsg获取硬件信息adb...慢牛策略阅读6,769评论0赞15美丽的泸沽湖,想和妈妈一起去,拍美美的照片肯定超级爽呢!twinkle多啊阅读199评论1赞0Mac下如何查看CPU和内存为了学习汇编语言,特意看了王爽的《汇编语言》。

到了第二章的实验题,因为Mac缘故,无法做实验了。

怎么办?1:下载...Karl_冬瓜阅读2,455评论0赞1潇水日签:从壳里走出来不论你用WOOP来干什么,都要记住一点,这个策略跟本上是与别人、与周围世界建立联系。

参考书目:[美]加布里埃尔...潇水日签阅读60评论0赞0字纸爬疏在一切应当或者不应当的时候,会来写。

深夜里敲键盘或者写本子,一个字一个字,的确是没什么用,但是在那样一个昏暗或者迷...黄九郎阅读167评论0赞0抽奖1赞2赞更多好文



請為這篇文章評分?