一、Bugreport

文章Bugreport源码篇(一)从源码角度阐释了Bugreport,那么本文则是从实战角度来说说,如何看懂bugreport,对于通过bugreport获取到内容往往非常长,这里简单划分为19部分,先整体上简单说说每部分log的title信息。

1. 系统build相关信息

系统build信息:

  • dumpstate: date
  • Build: getprop ro.build.display.id
  • Build fingerprint: getprop ro.build.fingerprint
  • Bootloader: getprop ro.bootloader
  • Radio: getprop ro.baseband
  • Network: getprop gsm.operator.alpha
  • Kernel: dump_file /proc/version
  • Command line: cat /proc/cmdline

系统运行时间:

------ UPTIME (`uptime`) ------
up time: 00:01:53, idle time: 00:02:44, sleep time: 00:00:00
[uptime: 0.015s elapsed]
  • up time:系统运行时长
  • idle time:系统空闲时长
  • sleep time:系统休眠时长
  • elapsed:uptime指令执行时长

2. 内存/CPU/进程等信息

下面列举bugreport结果相关项的title,其中括号中内容便是相应的命令

------ UPTIME MMC PERF (/sys/block/mmcblk0/) ------
------ MEMORY INFO (/proc/meminfo) ------
------ CPU INFO (top -n 1 -d 1 -m 30 -t) ------
------ PROCRANK (procrank) ------
------ VIRTUAL MEMORY STATS (/proc/vmstat) ------
------ VMALLOC INFO (/proc/vmallocinfo) ------
------ SLAB INFO (/proc/slabinfo) ------
------ ZONEINFO (/proc/zoneinfo) ------
------ PAGETYPEINFO (/proc/pagetypeinfo) ------
------ BUDDYINFO (/proc/buddyinfo) ------
------ FRAGMENTATION INFO (/d/extfrag/unusable_index) ------
------ KERNEL WAKELOCKS (/proc/wakelocks) ------
------ KERNEL WAKE SOURCES (/d/wakeup_sources: 1970-01-01 08:00:00) ------
------ KERNEL CPUFREQ (/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state) ------
------ KERNEL SYNC (/d/sync) ------
------ PROCESSES (ps -P) ------
------ PROCESSES AND THREADS (ps -t -p -P) ------
------ PROCESSES (SELINUX LABELS) (ps -Z) ------
------ LIBRANK (librank) ------

这里的涉及的信息较多,这里就先介绍下/sys/block/mmcblk0/:
命令:dump_files(“UPTIME MMC PERF”, mmcblk0, skip_not_stat, dump_stat_from_fd); 输出/sys/block/mmcblk0/stat节点以及遍历/sys/block/mmcblk0/mmcblk0p/stat。

stat: 51897 32911 5984151 171690 198408 171047 29988513 2001070 0 334260 2172230
stat: read: 17845KB/s write: 1233KB/s
mmcblk0p24/stat: 16  28 346  50  6   2   64   20  0   70   70
mmcblk0p24/stat: read: 3543KB/s write: 1638KB/s
...

另外read = 512data3/data4, write = 512data7/data8。

Name 单位 含义
read I/Os requests 已处理的I/O读操作请求个数
read merges requests I/O读操作的合并请求个数
read merges requests I/O读操作的合并请求个数
read sectors sectors(512B) 读取的扇区数
read ticks ms 读请求的总等待时间
write I/Os requests 已处理的I/O写操作请求个数
write merges requests I/O写操作的合并请求个数
write sectors sectors(512B) 写入的扇区数
write ticks ms 写请求的总等待时间
in_flight requests 正在处理中的I/O请求数
io_ticks ms 该块设备处于活跃态的总时长
time_in_queue ms 所有请求的总等待时长

3. kernel log

内核log信息,通过命令dmesg可获取

------ KERNEL LOG (dmesg) ------

4. lsof、map及Wait-Channels

4.1 lsof

------ LIST OF OPEN FILES (/system/xbin/su root lsof) ------
COMMAND  PID  USER  FD  TYPE  DEVICE  SIZE/OFF  NODE   NAME
zygote   286  root  mem  ???   b3:17   16384   2827  /system/vendor/lib/libcneconn.so
...

所有进程打开的文件,例如pid=286的zygote进程打开libcneconn.so文件。

4.2 show map

------ SHOW MAP 1 (/init) (/system/xbin/su root showmap 1) ------
------ SHOW MAP 2 () (/system/xbin/su root showmap 2) ------
...
------ SHOW MAP 3649 () (/system/xbin/su root showmap 3649) ------

所有进程的show map

4.3 Wait-Channels

------ BLOCKED PROCESS WAIT-CHANNELS ------
1    /init     SyS_epoll_wait
...

所有线程的Wait-Channels,记录着所有线程最后停留所在位置,例如上面是指pid=1的进程init,最后blocked在SyS_epoll_wait方法内。

5. system log

------ SYSTEM LOG (logcat -v threadtime -d *:v) ------

6. event log

------ EVENT LOG (logcat -b events -v threadtime -d *:v) -----

7. radio log

------ RADIO LOG (logcat -b radio -v threadtime -d *:v) ------

另外log统计信息,记录main/radio/events/system/crash/kernel各个log使用情况 —— LOG STATISTICS (logcat -b all -S) ——

8. vm traces

8.1 just now的栈信息

关键词为”VM TRACES JUST NOW”,数据来源”/data/anr/traces.txt.bugreport”

8.2 last ANR的栈信息

关键词为”VM TRACES AT LAST ANR”,数据来源”/data/anr/traces.txt”。

若存在该ANR则输出相应traces,否则输出:

*** NO ANR VM TRACES FILE (/data/anr/traces.txt): No such file or directory

8.3 tombstones信息

tombstones则是由debuggerd生成的,后续再单独用一篇文章来说明debuggerd的工作原理

------ TOMBSTONE (/data/tombstones/tombstone_01: 2016-06-18 11:16:18) ------

如果tombstones文件不存在则输出:

*** NO TOMBSTONES to dump in /data/tombstones

9. network

------ NETWORK DEV INFO (/proc/net/dev) ------
------ QTAGUID NETWORK INTERFACES INFO (/proc/net/xt_qtaguid/iface_stat_all) ------
------ QTAGUID NETWORK INTERFACES INFO (xt) (/proc/net/xt_qtaguid/iface_stat_fmt) ------
------ QTAGUID CTRL INFO (/proc/net/xt_qtaguid/ctrl) ------
------ QTAGUID STATS INFO (/proc/net/xt_qtaguid/stats) ------

10. last kernel log

------ LAST KMSG (/proc/last_kmsg) ------

11. last system log

------ LAST LOGCAT (logcat -L -v threadtime -b all -d *:v) ------

12. ip相关

------ NETWORK INTERFACES (ip link) ------
------ IPv4 ADDRESSES (ip -4 addr show) ------
------ IPv6 ADDRESSES (ip -6 addr show) ------
------ IP RULES (ip rule show) ------
------ IP RULES v6 (ip -6 rule show) ------
------ RT_TABLES (/data/misc/net/rt_tables: 2016-06-08 22:21:12) ------
------ ROUTE TABLE IPv4 (ip -4 route show table 255) ------
------ ROUTE TABLE IPv6 (ip -6 route show table 255) ------
...
------ ARP CACHE (ip -4 neigh show) ------
------ IPv6 ND CACHE (ip -6 neigh show) ------
------ IPTABLES (/system/xbin/su root iptables -L -nvx) ------
------ IP6TABLES (/system/xbin/su root ip6tables -L -nvx) ------
------ IPTABLE NAT (/system/xbin/su root iptables -t nat -L -nvx) ------
------ IPTABLE RAW (/system/xbin/su root iptables -t raw -L -nvx) ------
------ IP6TABLE RAW (/system/xbin/su root ip6tables -t raw -L -nvx) ------
------ WIFI NETWORKS (/system/xbin/su root wpa_cli IFNAME=wlan0 list_networks) ------

13. 中断向量表

中断向量表,记录着中断号对应的中断模块。

------ INTERRUPTS (1) (/proc/interrupts) ------
------ NETWORK DIAGNOSTICS (dumpsys connectivity --diag) ------
------ INTERRUPTS (2) (/proc/interrupts) ------

14. property信息

------ SYSTEM PROPERTIES ------
------ VOLD DUMP (vdc dump) ------
------ SECURE CONTAINERS (vdc asec list) ------
------ FILESYSTEMS & FREE SPACE (df) ------

15. last radio log

------ LAST RADIO LOG (parse_radio_log /proc/last_radio_log) ------

当然,背光信息 —— BACKLIGHTS ——

  • LCD brightness= dump_file /sys/class/leds/lcd-backlight/brightness
  • Button brightness= dump_file /sys/class/leds/button-backlight/brightness
  • Keyboard brightness= dump_file /sys/class/leds/keyboard-backlight/brightness
  • ALS mode= dump_file /sys/class/leds/lcd-backlight/als
  • LCD driver registers: dump_file /sys/class/leds/lcd-backlight/registers

16. Binder相关

------ BINDER FAILED TRANSACTION LOG (/sys/kernel/debug/binder/failed_transaction_log) ------
------ BINDER TRANSACTION LOG (/sys/kernel/debug/binder/transaction_log) ------
------ BINDER TRANSACTIONS (/sys/kernel/debug/binder/transactions) ------
------ BINDER STATS (/sys/kernel/debug/binder/stats) ------
------ BINDER STATE (/sys/kernel/debug/binder/state) ------

紧接着之后还有:

------ DUMP VENDOR RIL LOGS (/system/xbin/su root vril-dump) ------

17. dumpsys相关

------ DUMPSYS (dumpsys) ------

通过dumpsys -l可查看系统所有服务,不带参数的dumpsys命令会输出系统中所有的服务:每个服务开头信息:

DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE alarm:
DUMP OF SERVICE cpuinfo:
DUMP OF SERVICE dropbox:
...

18. dumpsys checkin相关

------ CHECKIN BATTERYSTATS (dumpsys batterystats -c) ------
------ CHECKIN MEMINFO (dumpsys meminfo --checkin) ------
------ CHECKIN NETSTATS (dumpsys netstats --checkin) ------
------ CHECKIN PROCSTATS (dumpsys procstats -c) ------
------ CHECKIN USAGESTATS (dumpsys usagestats -c) ------
------ CHECKIN PACKAGE (dumpsys package --checkin) ------

dumpsys电池统计,内存、网络统计、进程、使用情况、包这些统计类信息。

19. dumpsys app相关

------ APP ACTIVITIES (dumpsys activity all) ------
------ APP SERVICES (dumpsys activity service all) ------
------ APP SERVICES (dumpsys activity provider all) ------

dumpsys应用activity信息以及service和provider信息。

20. Tips

当需要搜索bugreport中内容时,可通过搜索------ 查找所有的子项目。 比如查看dumpsys信息,则可通过搜索------ DUMPSYS即可跳转到相应内容的开头。
bugreport具体内容涉及面很广,后续文章会介绍bugreport涉及的DropBoxManagerService,debuggerd等相关问题。 这里先说说一款开源的bugreport分析工具。

二、ChkBugReport

ChkBugReport是一款由sonymobile开源的工具,用于分析Bugreport并提供可视化阅读的html格式文件。

2.1 用法

(1)通过命令生成bugreport文件

adb shell bugreport > bugreport.txt

最新的Android系统已经废弃了上面这种抓bugreport方法,推荐使用如下命令:

bugreportz

执行bugreportz后会打印出bugreport的生成路径。

(2)执行chkbugreport,命令中.jar 和.txt都必须填写相应文件所在的完全路径。

java –jar chkbugreport.jar bugreport.txt

当然也可以把.jar添加到path,则直接使用chkbugreport bugreport.txt

(3) 通过浏览器打开/bugreport_out/index.html,可视化信息便呈现眼前。

2.2 chkbugreport分析

  • chkbugreport源码位于github;
  • chkbugreport jar直接下载,现有jar比较老,很久没有维护,建议自行下载源码,重新打包,功能更全。
  • chkbugreport实例:
    进程死锁
    AIDL死锁
    混合死锁

对于死锁问题,要留意state=MONITOR的线程,以及main线程的情况。

Tips:Chkbugreport虽然是一款比较方便的可视化分析工具,但分析问题仍不够全面,加上各大厂商会有自身的定制,导致信息遗漏。因此往往很多时候分析问题,只能以Chkbugreport辅助分析,还是需要自己去分析bugreport信息,因此还是很有必要掌握bugreport每一项信息的含义。

bugreport实战相关推荐

  1. 调试系列2:bugreport实战篇

    原址 一.Bugreport 文章Bugreport源码篇(一)从源码角度阐释了Bugreport,那么本文则是从实战角度来说说,如何看懂bugreport,对于通过bugreport获取到内容往往非 ...

  2. Android系统架构开篇

    Android系统庞大且错综复杂,Gityuan带领大家初探Android系统整体架构,一窥其全貌. 一.引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解An ...

  3. Android 系统(54)---Android系统开篇

    Android系统开篇[转 学习] 一.引言原网址 Android系统非常庞大.错中复杂,其底层是采用Linux作为基底,上层采用包含虚拟机的Java层以及Native层,通过系统调用(Syscall ...

  4. Android 操作系统架构

    版权声明: 本站所有博文内容均为原创,转载请务必注明作者与原文链接,且不得篡改原文内容. 为便于日常查阅本博客,可通过 Gityuan博客导航 方便检索文章 一.引言 众所周知,Android是谷歌开 ...

  5. spring boot 实战 / 可执行war启动参数详解

    概述   上一篇文章<spring boot 实战 / mvn spring-boot:run 参数详解>主要讲解了spring boot 项目基于maven插件启动过程中借助profil ...

  6. 《精通移动app测试实战:技术、工具和案例》图书目录

    图书相关链接: 京东网:http://item.jd.com/11891239.html 当当网:http://product.dangdang.com/23924601.html 亚马逊:https ...

  7. 精通移动App测试实战:技术、工具和案例

    本文是根据书籍<精通移动App测试实战:技术.工具和案例>进行学习记录,方便后期查阅,感谢书籍作者提供的学习机会. 目录 第1章 Android系统基础内容介绍 1.6创建模拟器 第2章J ...

  8. Android 进阶——性能优化之电量优化全攻略及实战小结(二)

    文章大纲 引言 一.在低电耗模式和应用待机模式下进行测试 1.在低电耗模式下测试您的应用 2.在应用待机模式下测试您的应用 3.列入白名单的可接受用例 4.确定当前充电状态 5.监控充电状态变化 6. ...

  9. android bugreport分析,Bugreport日志分析

    一.Bugreport 文章Bugreport源码篇(一)从源码角度阐释了Bugreport,那么本文则是从实战角度来说说,如何看懂bugreport,对于通过bugreport获取到内容往往非常长, ...

最新文章

  1. 谷歌发布新编程语言,专治SQL各种“不服”
  2. 心得体悟帖---回避型人格
  3. Hyperledger Indy 理解
  4. MTK Code Sync Clone
  5. 超级寒潮考验智慧城市万亿投资
  6. oracle 之 COMMENT
  7. 《JavaScript高级程序设计》Chapter 5 引用类型
  8. jboss eap_带有自定义模块的JBoss EAP上的骆驼
  9. 剑指offer:31-32记录(4道)
  10. php-fpm stop,php-fpm 启动,重启,终止操作
  11. Java编写一个小游戏
  12. 浏览器下载2014正式版官方免费下载
  13. linux 取消u盘写保护,如何关闭u盘写保护?u盘写保护怎么去掉?
  14. 众人帮怎么发布悬赏任务?发布任务所需要求条件是什么?
  15. html上绑定回车事件,js/jquery中input 绑定回车enter事件的代码
  16. html制作古诗网页登高,杜甫登高古诗硬笔书法作品图片
  17. 带你学习如何更好的使用uni-app(一)
  18. 密码学大作业(共三次)
  19. [机缘参悟-59]:《素书》-6-安于礼仪[安礼章第六]
  20. 四川大学计算机考研课程表,2019年四川大学研究生教学运行作息时间表.doc

热门文章

  1. 教你如何解决网页不能复制粘贴的问题
  2. Lucene查询操作
  3. .VS文件夹无法删除
  4. Java基础理论之IO流和其他流
  5. 大数据时代与精准运维
  6. 域名与IP地址及其映射
  7. python有道字典_GitHub - qiuzhiqian/Sdet: 这是一个使用python开发的有道词典工具
  8. JS 实现地区,省份,城市,县区4级联动
  9. 来自英特尔CEO帕特·基辛格的一封信
  10. 创建用户注册接口时的两个小问题