热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用ChkBugReport工具分析AndroidBugreport

本文介绍了如何使用开源工具ChkBugReport来解析和分析Android设备的Bugreport。ChkBugReport能够将复杂的Bugreport转换为易于阅读的HTML报告,并提供详细的图表和分析结论。

原文链接: http://www.androidlearner.net/using-chkbugreport-analysis-bugreport.html

一、ChkBugReport简介
ChkBugReport 是一个开源工具,它能够将你获取的Bugreport解析成易于阅读的HTML文件。生成的HTML文件包含基于Bugreport数据的各种图表和分析结论。

该工具的源码中使用了多个开源库,包括 jQuery、jsTree jQuery 插件、tablednd jQuery 插件、tablesorter jQuery 插件、js-hotkeys 和 jquery-COOKIE。如果你需要学习如何生成报告文档型的HTML,可以参考其源码。

目前,ChkBugReport可以从Bugreport数据中提取以下信息:
1. 堆栈跟踪 (Stacktraces): ChkBugReport 可以从Bugreport中解析出输出Bugreport的最后时刻、导致ANR(应用程序无响应)时刻以及其他关键时刻的堆栈信息。例如,你可以看到进程的优先级和策略,堆栈中耗时的部分会以黑色和红色标记,违反Strict Mode的行为(如在主线程中使用数据库)会以亮红色标记。如果线程发生死锁,报告的Errors部分会显示相关信息。
2. 日志 (Logs): 这部分对system、main和kernel日志进行分析,展示每个进程的内存使用情况、产生日志最多的程序、Activity的启动耗时、数据库操作耗时统计、对象被锁定的时间、AIDL调用时间、Activity和Service的生命周期及其在内存中的使用频率等。
3. 包信息 (Packages): 解析Bugreport中存储的packages.xml文件,展示一系列的包、用户ID和权限。
4. 进程信息 (Processes): 包括操作应用过程中产生的系统事件日志和内存使用信息。
5. 电池统计 (Battery statistics): 提供电池使用情况的统计信息。
6. CPU频率统计 (CPU Frequency statistics): 提供CPU频率的统计信息。
7. 原始数据 (Raw data): 将原始数据分割成小段。

ChkBugReport还可以检测到潜在的错误,这些错误会在输出报告的Errors部分中显示。你可以在输出报告的堆栈跟踪中找到死锁或违反Strict Mode的行为。

二、ChkBugReport使用方法

使用ChkBugReport非常简单:

1java -jar $HOME/Downloads/chkbugreport.jar $HOME/tmp/bugreport.txt

你也可以将chkbugreport.jar添加到PATH环境变量中,然后直接使用:

1chkbugreport thebugreport.txt

该工具将根据你的Bugreport数据生成一个名为bugreport_out的分析结果目录。

你可以使用以下命令获取Bugreport:

1adb shell bugreport > bugreport.txt

你还可以使用ChkBugReport分析Bugreport的部分数据,例如/data/anr/traces.txt:

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

这将输出分析结果到dummy_out目录。
你甚至可以使用ChkBugReport分析traceview生成的数据:

1chkbugreport -t something.prof

Prof数据的生成方法如下:
1. 使用Eclipse插件traceview生成。
2. 手动生成:
a. 使用adb shell ps列出所有进程,并找到你要追踪的进程的PID。
b. 执行adb shell am profile PID start /data/profile.dat,开始分析。
c. 操作你的应用。
d. 执行adb shell am profile PID stop,停止分析。
e. 导出数据并清除临时文件:adb pull /data/profile.dat,adb shell rm /data/profile.dat。
f. 使用ChkBugReport进行分析:chkbugreport -t profile.dat。

chkbugreport的常见参数如下:

chkbugreport常用参数

其他参数(较少使用):

chkbugreport不常用参数

三、相关参考
1. 开源工具ChkBugReport介绍
2. ChkBugReport源码
3. ChkBugReport最新jar包下载地址
4. 使用ChkBugReport输出的报告示例
a. 简单的进程死锁示例
b. 两个进程相互调用对方的AIDL导致阻塞的死锁示例
c. 结合上述两个示例的情况(一个进程调用AIDL阻塞导致另一个线程死锁)


推荐阅读
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入理解ExtJS:从入门到精通
    本文详细介绍了ExtJS的功能及其在大型企业前端开发中的应用。通过实例和详细的文件结构解析,帮助初学者快速掌握ExtJS的核心概念,并提供实用技巧和最佳实践。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • CentOS 7.2 配置防火墙端口开放
    本文介绍如何在 CentOS 7.2 系统上配置防火墙以开放特定的服务端口,包括 FTP 服务的临时与永久开放方法,以及如何验证配置是否生效。 ... [详细]
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • 本文介绍了如何在Mac操作系统中实现对NTFS文件系统的完整读写功能,包括必要的软件安装步骤和配置方法。 ... [详细]
  • 本文详细介绍了钩子(hook)的概念、原理及其在编程中的实际应用。通过对比回调函数和注册函数,解释了钩子的工作机制,并提供了具体的Python示例代码,帮助读者更好地理解和掌握这一重要编程工具。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
author-avatar
shadowsuyan3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有