偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺談安卓日志分析

譯文
移動(dòng)開發(fā) Android
本文將和您討論Android日志系統(tǒng)的各種基本類型、格式、位置、過濾器、以及分析工具。

【51CTO.com快譯】眾所周知,日志在應(yīng)用產(chǎn)品的整個(gè)開發(fā)生命周期中發(fā)揮著重要的作用。例如:在軟件開發(fā)過程中,錯(cuò)誤日志可以幫助開發(fā)人員及時(shí)地識(shí)別出程序中的邏輯錯(cuò)誤;而在將產(chǎn)品發(fā)布到市場之后,支持工程師可以通過分析錯(cuò)誤日志,來解決各種疑難雜癥。在我們常用的安卓(Android)系統(tǒng)中,各種日志默認(rèn)是被集中式管理的。當(dāng)然,市場上有許多可用來開發(fā)Android應(yīng)用的工具,能夠讓應(yīng)用開發(fā)程序員們編寫出自定義的日志消息,以及特定日志語句定義的各種過濾器。目前,Android生態(tài)系統(tǒng)提供了不同類型的日志,其中包括:應(yīng)用日志、系統(tǒng)日志、事件日志、以及廣播日志(Radio Logs)。

日志記錄系統(tǒng)的組成包括:內(nèi)核驅(qū)動(dòng)程序和內(nèi)核緩沖區(qū)(用于存儲(chǔ)Android日志消息),可用于創(chuàng)建日志條目和訪問日志消息的C、C++和Java類,可用于查看日志消息(logcat)的獨(dú)立程序,以及具有查看日志和過濾來自主機(jī)的日志消息(通過eclipse或ddms)等組件。

Android系統(tǒng)的Linux內(nèi)核有著四個(gè)不同的日志緩沖區(qū),它們針對(duì)系統(tǒng)的不同部分提供著日志記錄。例如:通過文件系統(tǒng)里/dev/log的設(shè)備節(jié)點(diǎn),我們可以訪問到Android的四個(gè)日志緩沖區(qū):main、event、radio和system。其中main日志用于應(yīng)用程序,event用于系統(tǒng)事件信息,radio用于電話相關(guān)信息,而system則與低級(jí)系統(tǒng)消息和調(diào)試有關(guān)。

日志中的每一條消息都包含有一個(gè)標(biāo)記。通過此類標(biāo)記我們可以獲悉:該消息來自系統(tǒng)或應(yīng)用的哪一部分、時(shí)間戳(該消息何時(shí)到達(dá)的)、消息的日志級(jí)別(或消息所代表的事件優(yōu)先級(jí))、以及日志消息體本身(有關(guān)錯(cuò)誤、異?;蛐畔⒌仍敿?xì)的說明)。

Android系統(tǒng)中的四大日志類型:

1.應(yīng)用日志

  • 使用android.util.Log類方法,將不同優(yōu)先級(jí)的消息寫到日志中。
  • 利用各種Java類,以字符串的形式靜態(tài)聲明它們的標(biāo)記,并傳遞給日志方法。
  • 日志方法可用來標(biāo)識(shí)消息的“優(yōu)先級(jí)”(或日志級(jí)別)。
  • 各種消息檢索工具(logcat)在處理日志時(shí),可以按標(biāo)識(shí)或優(yōu)先級(jí)來進(jìn)行過濾。

2.系統(tǒng)日志

  • 使用android.util.Slog類,來編寫具有不同優(yōu)先級(jí)的消息、及其關(guān)聯(lián)消息。
  • 許多Android框架類都能夠?qū)⑾到y(tǒng)日志(可能比較雜亂)與應(yīng)用日志消息區(qū)分開來。
  • 格式化的消息是通過C/C++庫被傳遞到內(nèi)核驅(qū)動(dòng)的,該驅(qū)動(dòng)能夠?qū)⑾⒋鎯?chǔ)到適當(dāng)?shù)木彌_區(qū)(如:系統(tǒng)緩沖區(qū))中。

3.事件日志

  • 使用android.util.EventLog類創(chuàng)建事件日志消息,此類消息通常為二進(jìn)制格式。
  • 日志條目包含了二進(jìn)制標(biāo)記代碼,并跟隨著二進(jìn)制參數(shù)。
  • 消息標(biāo)記代碼通常被存儲(chǔ)在系統(tǒng)的/system/etc/event-log-tags中。
  • 每個(gè)消息都帶有日志消息的字符串,以及指向該條目關(guān)聯(lián)(存儲(chǔ))值的代碼。

4.廣播日志

  • 作用于與電話(調(diào)制解調(diào)器)相關(guān)的信息。
  • 日志條目由二進(jìn)制標(biāo)簽代碼和消息所組成,可用于提供各種類型的網(wǎng)絡(luò)信息。
  • 日志記錄系統(tǒng)會(huì)自動(dòng)將帶有特定標(biāo)記的消息,路由到radio緩沖區(qū)中。

Android上日志格式

在Android系統(tǒng)里常見的日志格式為:tv_sectv_nsec priority pidtid tag messageLen Message。其中:

  • tag:日志標(biāo)簽。
  • tv_sec&tv_nsec:日志消息的時(shí)間戳。
  • pid:來自日志消息的進(jìn)程ID。
  • tid:線程ID。
  • priority的值可參照如下規(guī)律,按照從低到高的順序排列:
    • V-詳細(xì)(Verbose,最低優(yōu)先級(jí))*
    • D-調(diào)試(Debug)*
    • I-信息(Info)*
    • W-警告(Warning)*
    • E-錯(cuò)誤(Error)*
    • F-致命(Fatal)*
    • S-靜默(Silent,最高優(yōu)先級(jí),但不打印任何內(nèi)容)*

日志文件位置

原則上,Android的各項(xiàng)日志(包括崩潰日志)可以被存儲(chǔ)在多處,且無標(biāo)準(zhǔn)化目錄(即:由系統(tǒng)的ROM所特定)的要求。在此,我們介紹一些常用且常見的目錄:

  •  /data/anr:Dalvik(譯者注:是Google自行設(shè)計(jì)的用于Android平臺(tái)的虛擬機(jī)。)會(huì)在ANR處寫入棧的跟蹤,即“應(yīng)用無響應(yīng)(Application Not Responding)”,同時(shí)也稱為“強(qiáng)制關(guān)閉(Force-Close)”。
  •  /data/dontpanic:此處包含了一些崩潰日志,以便實(shí)現(xiàn)各種跟蹤。
  •  /data/kernelpanics:此處存儲(chǔ)了與“內(nèi)核錯(cuò)誤(kernel panic)”相關(guān)的日志。
  •  /data/tombstones:此處會(huì)包含多個(gè)tombstone_nn文件(nn是從0到10的數(shù)字,也就是說,在超過10以后需要重新計(jì)數(shù))。

“Log”相關(guān)的命令行工具

在實(shí)際項(xiàng)目中,我們可以通過各種應(yīng)用程序或命令行工具,從設(shè)備或仿真器上捕獲在Android上產(chǎn)生的相關(guān)日志,進(jìn)而將它們共享給各類開發(fā)人員或維護(hù)人員,以便他們開展深入的分析。下面是三個(gè)常用的命令:

  • adb logcat:顯示當(dāng)前Android系統(tǒng)所有類型的日志。
  • adb logcat -v threadtime:在顯示內(nèi)容中包含日期和時(shí)間。
  • adb logcat -v threadtime> logfile.txt:將日志存儲(chǔ)在logfile.txt中。

實(shí)用的過濾器模式

為了減少數(shù)據(jù)量,您可以通過在adb命令(請參見-- https://www.pcloudy.com/executing-adb-shell-commands/)中使用如下過濾器(filter),來縮減日志的總量。當(dāng)然,您也可以使用此類過濾器,來搜索用戶Android設(shè)備上的日志文件。

  • adb logcat -f:將所有日志保存到一個(gè)文件中。
  • adb logcat“*:E”:獲取所有的致命錯(cuò)誤信息。
  • adb logcat | grep -i “foo.example.”:獲取與“foo.example.*”相關(guān)的所有日志并標(biāo)記。
  • adb logcat“application_or_tag_name:*”“*:S”:按應(yīng)用名稱獲取所有的日志。
  • adb logcat -b events “gsm_service_state_change” “*:S”:獲取所有GSM的狀態(tài)更改。
  • adb logcat -b radio:獲取所有的廣播事件。

日志分析

至此,我們對(duì)Android的日志系統(tǒng)有了基本的了解。在實(shí)際分析中,我們通常會(huì)關(guān)注兩類應(yīng)用日志,它們分別是:

  • 調(diào)試日志–在開發(fā)和測試階段產(chǎn)生的日志文件。
  • 生產(chǎn)日志–由最終用戶在使用過程中直接生成的文件。

我們可以使用諸如GoogleLogTool和SonyLogTool之類的工具,通過采用過濾器模式,進(jìn)行深入的分析。

原標(biāo)題:Android Log Analysis ,作者: Bala Murugan

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2020-07-21 18:29:19

LinuxUnixiOS

2016-09-19 15:40:25

2021-08-02 22:56:54

漏斗分析數(shù)據(jù)

2017-10-16 15:04:32

javaAndroidAPT技術(shù)

2014-08-29 15:16:41

SDN

2021-08-19 09:17:12

IOT物聯(lián)網(wǎng)設(shè)備分析

2021-08-01 08:08:04

安卓安全APP

2016-03-12 21:46:56

Inspeckage應(yīng)用程序動(dòng)態(tài)分析

2023-10-31 18:42:21

2023-12-17 14:36:05

2016-05-13 15:08:46

2012-09-06 09:31:14

PHPmysqlpdo

2019-06-20 16:07:12

鴻蒙安卓操作系統(tǒng)

2013-11-04 14:49:34

安卓

2018-02-09 08:59:47

安卓FuchsiaiOS

2010-04-16 11:17:33

hints調(diào)整

2014-08-07 09:24:08

Process

2011-07-05 16:13:07

2012-05-01 08:27:44

谷歌安卓

2013-10-17 10:17:41

安卓
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)