bugreport分析


一、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 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

------ VM TRACES JUST NOW (/data/anr/traces.txt.bugreport: 2016-06-09 18:57:29) ------------ VM TRACES AT LAST ANR (/data/anr/traces.txt: 2016-06-09 18:47:39) ------

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分析工具

原文鏈接:https://www.jianshu.com/p/1ada78f09336


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM