Android应用调试-BugReport_adb bugreport_weixin_49858366的博客-程序员宅基地

技术标签: android  


一、BugReport是什么?

在安卓应用开发中,app程序的调试分析是日常生产中进程会进行的工作。而BugReport中包含了设备日志、堆栈轨迹和其他诊断信息,可以帮助开发人员查找和修复应用中的错误。

二、如何获取bug reports

一般来说有三种方法可以获取Bug reports,分别是通过安卓手机直接获取、通过ADB工具获取以及通过Android studio模拟器获取。以下主要详细说明前面两种方法:

1.从手机上获取bug reports

(1)确保手机端已启用开发者选项。
(2)在开发者选项中,选择生成bug reports。
(3)选择所需的bug reports类型,然后点按报告。一段时间,就可以从消息栏收到bug reports已准备就绪的通知(参见图 1)。
图一

2.使用 adb 获取bug reports

如果只连接了一台手机,则可以使用 adb 获取bug reports,如下所示:

$ adb bugreport E:\Reports\MyBugReports

如果电脑上连接了多台手机,则必须使用 -s 选项指定设备。运行以下 adb 命令可获取设备序列号并生成错误报告。

$ adb devices
List of devices attached
emulator-5554      device
8XV7N15C31003476 device

$ adb -s 8XV7N15C31003476 bugreport

三、如何对BugReport进行分析?

一般情况下,我们抓到的文件名为 bugreport-BUILD_ID-DATE.zip,它可能会包含多个文件,但最重要的文件是 bugreport-BUILD_ID-DATE.txt。这个文件就是bug reports,它包含系统服务 (dumpsys)、错误日志 (dumpstate) 和系统消息日志 (logcat) 的诊断输出。系统消息包括设备抛出错误时的堆栈轨迹,以及从所有应用中使用 Log 类写入的消息。

压缩包中有一个 version.txt 元数据文件,其中包含 Android 版本号,而且启用 systrace 后,压缩包中还会包含 systrace.txt 文件。Systrace 工具可以获取并显示应用进程和其他 Android 系统进程的执行时间,从而帮助分析应用的性能。

dumpstate 工具会将文件从设备的文件系统复制到 ZIP 文件的 FS 文件夹下,以便您引用它们。例如,设备中的 /dirA/dirB/fileC 文件会在 ZIP 文件中生成 FS/dirA/dirB/fileC 条目。
图2.bug reports文件目录
Bug reports的文件有时候是非常大的,如果使用文本工具打开查看将是一个噩梦。因此Google针对android 5.0以上的系统开发了一个叫做battery historian的分析工具,这个工具就是用来解析这个txt文本文件,然后使用web图形的形式展现出来,这样出来的效果更加人性化,更加可读。

这个工具是一个开源工具,可以通过GitHub下载:https://github.com/google/battery-historian
下载后运行是如下的一个可视化界面:
battery-historian图形化界面


总结

以上就是Android开发重要的调试手段Bug Reports,重点在于如何抓取Bug Reports以及对其进行分析。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_49858366/article/details/118943590

智能推荐

1.Elasticsearch顶尖高手系列课程介绍_俺是刘铁柱的博客-程序员宅基地

近期在学习Elasticsearch,机缘巧合之下看到中华石衫老师的课程,粗略的翻看一下目录,这不就是妥妥的宝藏嘛,但是中华石衫老师的课程是根据5.2版本讲解,但据我观察5.2版本与5.6.8版本变化不是很大,且在一些核心的知识点中,Elasticsearch几乎没有变换,像NRT,索引,分片,副本这些概念,所以我打算将中华石衫老师讲到的所有知识点全部复盘一边,同时在CSDN中开设专栏,分享给需要的同学们。特别名声:侵权必删先简单介绍下这套课程体系:课程内容分为核心知识篇和高手进阶篇1.核心知识._elasticsearch顶尖高手系列

各个云厂商获取实例metadata的地址_大囚长的博客-程序员宅基地

注意必须在云厂商的实例上运行谷歌云必须加-H “Metadata-Flavor: Google”例如:curl -s http://metadata.google.internal/computeMetadata/v1/instance/cpu-platform -H “Metadata-Flavor: Google”参考文档地址https://cloud.google.com/compute/docs/storing-retrieving-metadata?hl=zh_cn虚拟机认元数据.

Android io模拟串口驱动,虚拟串口设备驱动完整源代码-程序员宅基地

虚拟串口设备驱动,虚拟串口的完整源代码,包括注释和开发日志。据说市值5万人民币!Virtual Serial Device DriverWindows2K下虚拟串口设备驱动程序及相关应用程序内容列表===========主要功能使用说明各模块说明工作机制更新和改进不足之处跟我联系主要功能===========在Windows2K操作系统上虚拟出若干串口设备,这些虚拟串口设备作为 TDI Clien...

以太坊私网搭建练习_big_cheng的博客-程序员宅基地

1. 环境Win 10 HomeCentOS 7 (3.10.0-693.el7.x86_64, 在VirtualBox虚机)GETH1.8.2 (1.9.4)2. 安装https://geth.ethereum.org/downloads/注:此页面由于从gethstore.blob.core.windows.net请求一个很大的list文件,容易打不开。记录的1.8.2的下载地址...

Ubuntu下找不到ttyUSB*问题解决_aidingtu4226的博客-程序员宅基地

一、硬件连接确认Ubuntu对USB转串口设备的支持。1、#lsmod | grep usbserial如果有usbserial,说明系统支持USB转串口。如果没有,先安装ch340驱动或者cp210驱动CH340LINUX驱动下载地址:http://www.wch.cn/download/CH341SER_LINUX_ZIP.html二、查看电脑的内核版..._ubuntu18.04 没有ttyusb

oracle consistent gets,Oracle buffer cache理解之七——统计信息!-程序员宅基地

前文说了buffer cache的管理和DBWR进程是如何写文件的,更加具体的细节这里就不阐述了,这篇文章我们来了解一下关于buffer cache的统计信息,这里只介绍比较重要的几个统计信息参数:PgSQLSQL> SELECT name, value FROM v$sysstat WHERE name in (2 'session logical reads',3 ..._oracle consistent gets 很大

随便推点

Sigma Function LightOJ - 1336--------------------------------------数论(唯一分解+推理过程)_AKone123456的博客-程序员宅基地

Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma (σ). This function actually denotes the sum of all divisors of a number. For example σ(24) = 1+2+3+4...

Lua和C语言的交互_lua与c语言交互_hksoobe的博客-程序员宅基地

Lua生来就是为了和C交互的,因此使用C扩展Lua或者将Lua嵌入到C当中都是非常流行的做法。要想理解C和Lua的交互方式,首先要回顾一下C语言是如何处理函数参数的。C函数和参数大家知道C语言是用汇编实现的,在汇编语言中可没有函数的概念,与函数对应的是叫做子过程的东西,子过程就是一段指令,一个子过程与它调用的子过程之间通过栈来进行参数的传递交互。在一个子过程在调用别的子过程之前,会按照_lua与c语言交互

Go语言基础~B~流程控制_BruceChao5211的博客-程序员宅基地

package mainimport ( "fmt")func main() { // 流程控制语句 a := 10 if a < 10{ fmt.Println("small") } else if a >= 10 && a < 20 { if a%10 == 0 { fmt.Printf("0 \n") ...

Python画动漫人物(2)_python人物代码_Silk Roads的博客-程序员宅基地

用turtle库画小黄人,小猪佩奇和蜘蛛侠。_python人物代码

cmake cache变量_反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!_weixin_39732534的博客-程序员宅基地

本文的排版有些问题,如果您觉得本文排版不太好看,可以到这里查看:反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!​mp.weixin.qq.com摘要:本文记录一下 CMake 变量的定义、原理及其使用。CMake 变量包含 Normal Variables、Cache Variables。通过 set 指令可以设置两种不同的变量。也可以在 CMake 脚本中使用和设置环境变量。se..._cmake cache

linux蓝牙驱动代码阅读笔记_chenzhiya的博客-程序员宅基地

linux蓝牙驱动代码阅读笔记转载时请注明出处和作者联系方式作者联系方式:李先静 昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。net/hci_core.cHCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与H

推荐文章

热门文章

相关标签