Log中'main', 'system', 'radio', 'events'以及android log分析

來源:互聯網
上載者:User

標籤:

在Android中不同的log寫到不同的裝置中,共有/dev/log/system, /dev/log/main, /dev/log/radion, /dev/log/events四中類型。其中預設Log.v等寫入/dev/log/main中。Slog寫入/dev/log/system中。

    我們在使用logcat 抓去日至的時候, 可以指定buffer,來請求不同的環形緩衝區 (‘main‘, ‘system‘, ‘radio‘, ‘events‘,預設為"-b main -b system"),因為Android日誌系統為日誌訊息保持了多個迴圈緩衝區,而且不是所有的訊息都被發送到預設緩衝區,要想查看這些附加的緩衝區,可以使用-b 選項,以下是可以指定的緩衝區:   

main     — 查看主要緩衝區 (預設緩衝區)   

radio     — 查看包含在無線/電話相關的緩衝區訊息   

events    — 查看事件相關的訊息

    adb logcat -b <system, radio, events, main(default)>

1    log檔案分類簡介            即時列印 的主要有: logcat main , logcat radio , logcat events , tcpdump ,還有高通平台的還會有 QXDM 日誌          狀態資訊 的有: adb shell cat /proc/kmsg , adb shell dmesg , adb shell dumpstate , adb shell dumpsys , adb bugreport ,工程模式等 2    LOG抓取詳解l  即時列印      adb logcat -b main -v time>app.log  列印應用程式的 log    adb logcat -b radio -v time> radio.log 列印射頻相關的 log , SIM STK 也會在裡面, modem 相關的 ATcommand 等,當然跟 QXDM 差的很遠了。    adb logcat -b events -v time  列印系統事件的日誌,比如觸屏事件。。。    tcpdump 是很有用的,對於 TCP/IP 協議相關的都可以使用這個來抓, adb shell tcpdump -s 10000 -w /sdcard/capture.pcap ,比如抓 mms 下載的時候的 UA profile , browser 上網的時候,使用 proxy 的 APN 下載, streaming 的相關內容包括 UA profile 等。    最後是高通平台的 QXDM ,不管是不是 Android ,只要使用高通晶片,都會對它很熟悉,當然了,不是高通的晶片就不用提它了。這個不多講,內容豐富,射頻,電話,上網, ... 凡是高通提供的解決方案,這個都可以抓。(QXDM 的 LOG抓取方法請參考 QPST、 QXDM的基本使用說明及作用 ) l  狀態資訊o   bugreport (命令 adb bugreport>bugreport.log) 。裡麵包含有 dmesg , dumpstate 和dumpsys 。o   dumpstate 是系統狀態資訊,裡面比較全,包括手機當前的記憶體資訊、 cpu 資訊、 logcat 緩衝, kernel 緩衝等等。o     adb shell dumpsys 這個是關於系統 service 的內容都在這個裡面,這個命令還有更詳盡的用法,比如 adb shell dumpsys meminfo system 是查看 system 這個 process 的記憶體資訊。o   kmsg 抓取adb shell cat /proc/kmsg > kmsg.txt ,開啟後查 msm_kgsl 欄位說明:用於檢索用 printk 產生的核心訊息。任何時刻只能有一個具有超級使用者權限的進程可以讀取這個檔案。也可以用系統調用 syslog 檢索這些訊息。通常使用工具 dmesg 或守護進程 klogd 檢索這些訊息。 proc 是一個記憶體檔案系統 , 每次讀檔案 kmsg 實際是核心內部的迴圈緩衝區 , 每讀過後 ,迴圈緩衝區的東西就被認為已經處理過了 ( 也就是變成無效內容 ), 所以你再次讀為空白是很正常的 為什麼會這樣處理呢 , 迴圈緩衝區大小有限 , 核心又隨時可能往裡面寫東西 , 所以這樣處理很正常 . 你去查一下 /proc/kmsg 的資訊有沒有跟系統日誌關聯 , 如果有的話 , 你就可以讀記錄檔o   dmsg 抓取adb shell dmesg > dmesg.txt說明: dmesg 用來顯示開機資訊, kernel 會將開機資訊儲存在 ring buffer 中。您若是開機時來不及查看資訊,可利用 dmesg 來查看。 dmesg 是 kernel 的 log ,凡是跟 kernel 相關的,比如driver 出了問題(相機,藍芽, usb ,啟動,等等)開機資訊亦儲存在 /var/log 目錄中,名稱為dmesg 的檔案裡。 more /var/log/dmesg o   工程模式下 log 的抓取            對於 Apollo 手機請撥打 *#*#8888#*#* , 然後勾選相應的 LOG 。待測試結束後,通過 SD 記憶卡匯出 LOG 到 PC. 3.Log分析:Get Log from Android Systemadb bugreport > bugreport.txtcopy bugreport to the current directory.bugreport 裡麵包含了各種 log 資訊 , 大部分 log 也可以通過直接運行相關的程式來直接獲得 .步驟如下 :1.adb shell 2. 進入相關工具程式的目錄 3. 執行相關程式 4. 得到相關資訊 下面以輸出進程資訊為例 1.adb shell 2. 輸入 ps -P 3. 可以看到相關進程資訊 Log Archive Analysis1.bugreportbugreport 記錄 android 啟動過程的 log, 以及啟動後的系統狀態 , 包括進程列表,記憶體資訊, VM資訊等等到 .2.bugreport 結構分析(1)dumpstateMEMORY INFO擷取該 log: 讀取檔案 /proc/meminfo系統記憶體使用量狀態 CPU INFO擷取該 log: 執行 /system/bin/top -n 1 -d 1 -m 30 -t系統 CPU 使用狀態 PROCRANK擷取該 log: 執行 /system/bin/procrank執行 /system/xbin/procrank 後輸出的結果 , 查看一些記憶體使用量狀態 VIRTUAL MEMORY STATS擷取該 log: 讀取檔案 /proc/vmstat虛擬記憶體分配情況 vmalloc 申請的記憶體則位於 vmalloc_start ~ vmalloc_end 之間,與物理地址沒有簡單的轉換關係,雖然在邏輯上它們也是連續的,但是在物理上它們不要求連續。 VMALLOC INFO擷取該 log: 讀取檔案 /proc/vmallocinfo虛擬記憶體分配情況 SLAB INFO擷取該 log: 讀取檔案 /proc/slabinfoSLAB 是一種記憶體 Clerk . 這裡輸出該分配器的一些資訊 ZONEINFO擷取該 log: 讀取檔案 /proc/zoneinfozone infoSYSTEM LOG( 需要著重分析 )擷取該 log: 執行 /system/bin/logcat -v time -d *:v會輸出在程式中輸出的 Log, 用於分析系統的目前狀態 VM TRACES擷取該 log: 讀取檔案 /data/anr/traces.txt因為每個程式都是在各自的 VM 中啟動並執行 , 這個 Log 是現實各自 VM 的一些 tracesEVENT LOG TAGS擷取該 log: 讀取檔案 /etc/event-log-tagsEVENT LOG擷取該 log: 執行 /system/bin/logcat -b events -v time -d *:v輸出一些 Event 的 logRADIO LOG擷取該 log: 執行 /system/bin/logcat -b radio -v time -d *:v顯示一些無線裝置的連結狀態 , 如 GSM , PHONE,STK(Satellite Tool Kit)…NETWORK STATE擷取該 log: 執行 /system/bin/netcfg ( 得到網路連結狀態 )擷取該 log: 讀取檔案 /proc/net/route ( 得到路由狀態 )顯示網路連結和路由 SYSTEM PROPERTIES擷取該 log: 參考代碼實現 顯示一些系統屬性 , 如 Version,Services,network…KERNEL LOG擷取該 log: 執行 /system/bin/dmesg顯示 Android 核心輸出的 LogKERNEL WAKELOCKS擷取該 log: 讀取檔案 /proc/wakelocks核心對一些程式和服務喚醒和休眠的一些記錄 KERNEL CPUFREQ(Linux kernel CPUfreq subsystem) Clock scaling allows you to change the clock speed of the CPUs on the fly.This is a nice method to save battery power, because the lower the clock speed is, the less power the CPU consumes.PROCESSES擷取該 log: 執行 ps -P顯示當前進程 PROCESSES AND THREADS擷取該 log: 執行 ps -t -p -P顯示當前進程和線程 LIBRANK擷取該 log: 執行 /system/xbin/librank剔除不必要的 libraryBINDER FAILED TRANSACTION LOG擷取該 log: 讀取檔案 /proc/binder/failed_transaction_logBINDER TRANSACTION LOG擷取該 log: 讀取檔案 /proc/binder/transaction_logBINDER TRANSACTIONS擷取該 log: 讀取檔案 /proc/binder/transactionsBINDER STATS擷取該 log: 讀取檔案 /proc/binder/statsBINDER PROCESS STATE擷取該 log: 讀取檔案 /proc/binder/proc/*bind 相關的一些狀態 FILESYSTEMS擷取該 log: 執行 /system/bin/df主要檔案的一些容量使用狀態 (cache,sqlite,dev…)PACKAGE SETTINGS擷取該 log: 讀取檔案 /data/system/packages.xml系統中 package 的一些狀態 ( 存取權限 , 路徑 …) ,類似 Windows 裡面的一些 lnk 檔案吧 .PACKAGE UID ERRORS擷取該 log: 讀取檔案 /data/system/uiderrors.txt錯誤資訊 KERNEL LAST KMSG LOG最新 kernel message logLAST RADIO LOG最新 radio logKERNEL PANIC CONSOLE LOGKERNEL PANIC THREADS LOG控制台 / 線程的一些錯誤資訊 logBACKLIGHTS擷取該 log: 擷取 LCD brightness 讀 /sys/class/leds/lcd-backlight/brightness擷取該 log: 擷取 Button brightness 讀 /sys/class/leds/button-backlight/brightness擷取該 log: 擷取 Keyboard brightness 讀 /sys/class/leds/keyboard-backlight/brightness擷取該 log: 擷取 ALS mode 讀 /sys/class/leds/lcd-backlight/als擷取該 log: 擷取 LCD driver registers 讀 /sys/class/leds/lcd-backlight/registers擷取相關亮度的一些資訊 (2)build.propVERSION INFO 輸出下列資訊 目前時間 當前核心版本 : 可以讀取檔案 (/proc/version) 獲得 顯示當前命令 : 可以讀取檔案夾 (/proc/cmdline) 獲得 顯示系統 build 的一些屬性 : 可以讀取檔案 (/system/build.prop) 獲得 輸出系統一些屬性 gsm.version.ril-implgsm.version.basebandgsm.imeigsm.sim.operator.numericgsm.operator.alpha(3)dumpsys執行 /system/bin/dumpsys 後可以獲得這個 log.經常會發現該 log 輸出不完整 , 因為代碼裡面要求該工具最多隻執行 60ms, 可能會導致 log 無法完全輸出來 .可以通過修改時間參數來保證 log 完全輸出 .資訊 :Currently running servicesDUMP OF SERVICE services-name(running)Log Code AnalysisSite: .\frameworks\base\cmds\dumpstate相關 Log 程式的代碼可以從上面目錄擷取 Log Analysis Experience分析步驟1. 查看一些版本資訊 確認問題的系統內容 2. 查看 CPU/MEMORY 的使用狀況 看是否有記憶體耗盡 ,CPU 繁忙這樣的背景情況出現 .3. 分析 traces因為 traces 是系統出錯以後輸出的一些線程堆棧資訊 , 可以很快定位到問題出在哪裡 . 4. 分析 SYSTEM LOG系統 Log 詳細輸出各種 log, 可以找出相關 log 進行逐一分析

 

Log中'main', 'system', 'radio', 'events'以及android log分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.