2012年10月17日 星期三

Android Log 訊息 - Bugreport




當一個人生病去看醫生,會說出症狀,醫生或做一些檢測來確認引起不良反應的原因。對於一個Android的裝置也一樣。在開發過程中,工程開發人員常會發現一些問題。這時候需要檢測裝置的發生原因。因此可以透過Android的內部紀錄訊息來檢測發生甚麼問題導致不良因素。

從何處下手?

Android 內有提供一個指令,稱為bugreport。可以透過指令adb bugreport  adb shell bugreport來取得Bugreport中的資訊。使用這個指令取得Android 4.1的模擬器內的bugreport可得到以下的六十八種紀錄訊息。這些訊息可以用來診斷Android目前的健康情況。

 UPTIME (uptime) 
 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) 
 KERNEL WAKELOCKS (/proc/wakelocks) 
 KERNEL CPUFREQ (/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state) 
 PROCESSES (ps -P) 
 PROCESSES AND THREADS (ps -t -p -P) 
 LIBRANK (librank) 
 KERNEL LOG (dmesg) 
 LIST OF OPEN FILES (/system/xbin/su root lsof) 
 SMAPS OF ALL PROCESSES 
 SHOW MAP 1 (/init) (/system/xbin/su root showmap 1) 
 BLOCKED PROCESS WAIT-CHANNELS 
 SYSTEM LOG (logcat -v threadtime -d *:v) 
 EVENT LOG (logcat -b events -v threadtime -d *:v) 
 RADIO LOG (logcat -b radio -v threadtime -d *:v) 
 VM TRACES JUST NOW (/data/anr/traces.txt.bugreport: 2012-10-17 08:21:46) 
 VM TRACES AT LAST ANR (/data/anr/traces.txt: 2012-10-17 08:16:11) 
 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) 
 NETWORK ROUTES (/proc/net/route) 
 NETWORK ROUTES IPV6 (/proc/net/ipv6_route) 
 LAST KMSG (/proc/last_kmsg) 
 LAST PANIC CONSOLE (/data/dontpanic/apanic_console) 
 LAST PANIC THREADS (/data/dontpanic/apanic_threads) 
 SYSTEM SETTINGS (/system/xbin/su root sqlite3 /data/…
 NETWORK INTERFACES (/system/xbin/su root netcfg) 
 IP RULES (ip rule show) 
 IP RULES v6 (ip -6 rule show) 
 ROUTE TABLE 60 (ip route show table 60) 
 ROUTE TABLE 61 v6 (ip -6 route show table 60) 
 ROUTE TABLE 61 (ip route show table 61) 
 ROUTE TABLE 61 v6 (ip -6 route show table 61) 
 ARP CACHE (/proc/net/arp) 
 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 list_networks) 
 SYSTEM PROPERTIES 
 VOLD DUMP (vdc dump) 
 SECURE CONTAINERS (vdc asec list) 
 FILESYSTEMS & FREE SPACE (/system/xbin/su root df) 
 PACKAGE SETTINGS (/system/xbin/su root cat /data/system/packages.xml) 
 PACKAGE UID ERRORS (/data/system/uiderrors.txt: 2012-10-15 02:30:29) 
 LAST RADIO LOG (parse_radio_log /proc/last_radio_log) 
 BACKLIGHTS 
 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) 
 DUMPSYS (dumpsys) 
 APP ACTIVITIES (dumpsys activity all) 
 APP SERVICES (dumpsys activity service all) 
 APP SERVICES (dumpsys activity provider all) 

在這些訊息中包含Android與Linux層的各種訊息,並能取得各種不同類別的訊息。例如,活動與事件、記憶體使用情形、系統狀態、射頻狀態,與網路狀態等。

值得探討的是,若產品是一個Android的手機或附有通訊功能的平板電腦。有些訊息包含電信通訊技術相關的底層訊息。這些訊息是通訊晶片與電信基定台的交換訊息。而在Bugreport的功能中可能無法傳遞這些訊息。需要特定的軟體或裝置去取得這些電信交換的訊息。

沒有留言:

張貼留言