Android開(kāi)發(fā)中EventLog分析

概要

在平時(shí)開(kāi)發(fā)和處理bug的過(guò)程中經(jīng)常會(huì)和EventLog打交到,通過(guò)EventLog來(lái)分析Activity故硅、Process蘑险、CPU、Window等相關(guān)信息决乎。

在開(kāi)發(fā)調(diào)試中可以通過(guò)如下命令查看EventLog信息:


    adb logcat -b events

在分析bug的時(shí)候可以從log中打開(kāi)如下文件查看EventLog信息:


    event.log

這兩種方式獲取到的信息基本上如:


01-06 18:54:07.783 886 1469 I am_uid_active: 1037

01-06 18:54:07.787 886 1469 I am_proc_bound: [0,1659,WebViewLoader-arm64-v8a]

01-06 18:54:07.790 886 1130 I am_proc_start: [0,1692,1001,com.qualcomm.qcrilmsgtunnel,service,com.qualcomm.qcrilmsgtunnel/.QcrilMsgTunnelService]

01-06 18:54:07.791 886 1128 I am_wtf : [0,886,system_server,-1,ActivityManager,Sending non-protected broadcast diagandroid.app.ApplicationState from system 886:system/1000 pkg android]

01-06 18:54:07.934 886 886 I wm_task_created: [1,0]

01-06 18:54:07.937 886 886 I wm_task_moved: [1,0,2147483647]

01-06 18:54:07.938 886 886 I am_create_task: [0,1]

01-06 18:54:07.938 886 886 I am_create_activity: [0,201820164,1,com.android.settings/.FallbackHome,android.intent.action.MAIN,NULL,NULL,276824320]

01-06 18:54:07.938 886 886 I wm_task_moved: [1,0,2147483647]

01-06 18:54:07.957 886 1366 I commit_sys_config_file: [settings-0-0,10]

從EventLog中我們可以獲取到不少有用的信息队询,例如上面 I am_create_task,創(chuàng)建task等,后面的括號(hào)中的內(nèi)容也有很高的價(jià)值构诚,下面我們會(huì)詳細(xì)講解對(duì)應(yīng)的字段

EventLog

EventLog中大概分為如下幾類(lèi)蚌斩,EventLog在編譯之后存放在system/etc/event-log-tags文件中,但是其語(yǔ)法定義在system/core/logcat/event.logtags文件中。

我們需要了解的主要為T(mén)agName后面的括號(hào)中的內(nèi)容,每一種Tag由于功能和模塊的不同范嘱,括號(hào)中的內(nèi)容不同送膳,但是都遵循以下規(guī)則:


(Name|type|unit)

  • Name:表示這個(gè)字段的意義

  • Type:表示這個(gè)字段的數(shù)據(jù)格式,取值為:


1: int

2: long

3: string

4: list

5: float

  • unit丑蛤,取值為

1: Number of objects

2: Number of bytes

3: Number of milliseconds

4: Number of allocations

5: Id

6: Percent

s: Number of seconds (monotonic time)

例如:


30001 am_finish_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)

在上面的代碼中(User|1|5)表示這個(gè)字段的意義為User叠聋,數(shù)據(jù)類(lèi)型為1,1的數(shù)據(jù)類(lèi)型對(duì)應(yīng)type的定義為int,5表示數(shù)據(jù)unit,5的數(shù)據(jù)類(lèi)型對(duì)應(yīng)unit中的定義為Id

這些定義主要在系統(tǒng)解析相關(guān)字段的時(shí)候用于代碼生成的映射關(guān)系受裹。

ActivityManager相關(guān)


30001 am_finish_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)

30002 am_task_to_front (User|1|5),(Task|1|5)

30003 am_new_intent (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)

30004 am_create_task (User|1|5),(Task ID|1|5)

30005 am_create_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Action|3),(MIME Type|3),(URI|3),(Flags|1|5)

30006 am_restart_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)

30007 am_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)

30008 am_anr (User|1|5),(pid|1|5),(Package Name|3),(Flags|1|5),(reason|3)

30009 am_activity_launch_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)

30010 am_proc_bound (User|1|5),(PID|1|5),(Process Name|3)

30011 am_proc_died (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(ProcState|1|5)

30012 am_failed_to_pause (User|1|5),(Token|1|5),(Wanting to pause|3),(Currently pausing|3)

30013 am_pause_activity (User|1|5),(Token|1|5),(Component Name|3),(User Leaving|3)

30014 am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3)

30015 am_proc_bad (User|1|5),(UID|1|5),(Process Name|3)

30016 am_proc_good (User|1|5),(UID|1|5),(Process Name|3)

30017 am_low_memory (Num Processes|1|1)

30018 am_destroy_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3),(Reason|3)

30019 am_relaunch_resume_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)

30020 am_relaunch_activity (User|1|5),(Token|1|5),(Task ID|1|5),(Component Name|3)

30021 am_on_paused_called (User|1|5),(Component Name|3),(Reason|3)

30022 am_on_resume_called (User|1|5),(Component Name|3),(Reason|3)

30023 am_kill (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(Reason|3)

30024 am_broadcast_discard_filter (User|1|5),(Broadcast|1|5),(Action|3),(Receiver Number|1|1),(BroadcastFilter|1|5)

30025 am_broadcast_discard_app (User|1|5),(Broadcast|1|5),(Action|3),(Receiver Number|1|1),(App|3)

30030 am_create_service (User|1|5),(Service Record|1|5),(Name|3),(UID|1|5),(PID|1|5)

30031 am_destroy_service (User|1|5),(Service Record|1|5),(PID|1|5)

30032 am_process_crashed_too_much (User|1|5),(Name|3),(PID|1|5)

30033 am_drop_process (PID|1|5)

30034 am_service_crashed_too_much (User|1|5),(Crash Count|1|1),(Component Name|3),(PID|1|5)

30035 am_schedule_service_restart (User|1|5),(Component Name|3),(Time|2|3)

30036 am_provider_lost_process (User|1|5),(Package Name|3),(UID|1|5),(Name|3)

30037 am_process_start_timeout (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3)

30039 am_crash (User|1|5),(PID|1|5),(Process Name|3),(Flags|1|5),(Exception|3),(Message|3),(File|3),(Line|1|5)

30040 am_wtf (User|1|5),(PID|1|5),(Process Name|3),(Flags|1|5),(Tag|3),(Message|3)

30041 am_switch_user (id|1|5)

30042 am_activity_fully_drawn_time (User|1|5),(Token|1|5),(Component Name|3),(time|2|3)

30043 am_set_resumed_activity (User|1|5),(Component Name|3),(Reason|3)

30044 am_focused_stack (User|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3)

30045 am_pre_boot (User|1|5),(Package|3)

30046 am_meminfo (Cached|2|2),(Free|2|2),(Zram|2|2),(Kernel|2|2),(Native|2|2)

30047 am_pss (Pid|1|5),(UID|1|5),(Process Name|3),(Pss|2|2),(Uss|2|2),(SwapPss|2|2),(Rss|2|2),(StatType|1|5),(ProcState|1|5),(TimeToCollect|2|2)

30048 am_stop_activity (User|1|5),(Token|1|5),(Component Name|3)

30049 am_on_stop_called (User|1|5),(Component Name|3),(Reason|3)

30050 am_mem_factor (Current|1|5),(Previous|1|5)

30051 am_user_state_changed (id|1|5),(state|1|5)

30052 am_uid_running (UID|1|5)

30053 am_uid_stopped (UID|1|5)

30054 am_uid_active (UID|1|5)

30055 am_uid_idle (UID|1|5)

30056 am_stop_idle_service (UID|1|5),(Component Name|3)

30057 am_on_create_called (User|1|5),(Component Name|3),(Reason|3)

30058 am_on_restart_called (User|1|5),(Component Name|3),(Reason|3)

30059 am_on_start_called (User|1|5),(Component Name|3),(Reason|3)

30060 am_on_destroy_called (User|1|5),(Component Name|3),(Reason|3)

30061 am_remove_task (Task ID|1|5), (Stack ID|1|5)

30062 am_on_activity_result_called (User|1|5),(Component Name|3),(Reason|3)



從相應(yīng)的Event的定義的TagName以及后面的參數(shù)的說(shuō)明碌补,我們可以拿到在我們分析問(wèn)題的過(guò)程中需要的信息

WindowManager相關(guān)


31000 wm_no_surface_memory (Window|3),(PID|1|5),(Operation|3)

31001 wm_task_created (TaskId|1|5),(StackId|1|5)

31002 wm_task_moved (TaskId|1|5),(ToTop|1),(Index|1)

31003 wm_task_removed (TaskId|1|5),(Reason|3)

31004 wm_stack_created (StackId|1|5)

31005 wm_home_stack_moved (ToTop|1)

31006 wm_stack_removed (StackId|1|5)

31007 wm_boot_animation_done (time|2|3)



Power相關(guān)


2722 battery_level (level|1|6),(voltage|1|1),(temperature|1|1)

2723 battery_status (status|1|5),(health|1|5),(present|1|5),(plugged|1|5),(technology|3)

2724 power_sleep_requested (wakeLocksCleared|1|1)

2725 power_screen_broadcast_send (wakelockCount|1|1)

2726 power_screen_broadcast_done (on|1|5),(broadcastDuration|2|3),(wakelockCount|1|1)

2727 power_screen_broadcast_stop (which|1|5),(wakelockCount|1|1)

2728 power_screen_state (offOrOn|1|5),(becauseOfUser|1|5),(totalTouchDownTime|2|3),(touchCycles|1|1),(latency|1|3)

2729 power_partial_wake_state (releasedorAcquired|1|5),(tag|3)

2730 battery_discharge (duration|2|3),(minLevel|1|6),(maxLevel|1|6)

2731 power_soft_sleep_requested (savedwaketimems|2)

Notification相關(guān)


27500 notification_panel_revealed (items|1)

27501 notification_panel_hidden

27510 notification_visibility_changed (newlyVisibleKeys|3),(noLongerVisibleKeys|3)

27511 notification_expansion (key|3),(user_action|1),(expanded|1),(lifespan|1),(freshness|1),(exposure|1)

27520 notification_clicked (key|3),(lifespan|1),(freshness|1),(exposure|1),(rank|1),(count|1)

27521 notification_action_clicked (key|3),(action_index|1),(lifespan|1),(freshness|1),(exposure|1),(rank|1),(count|1)

27530 notification_canceled (key|3),(reason|1),(lifespan|1),(freshness|1),(exposure|1),(rank|1),(count|1),(listener|3)

27531 notification_visibility (key|3),(visibile|1),(lifespan|1),(freshness|1),(exposure|1),(rank|1)

27532 notification_alert (key|3),(buzz|1),(beep|1),(blink|1)

27533 notification_autogrouped (key|3)



實(shí)戰(zhàn)


定義:

30014 am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3)

EventLog:

I am_proc_start: [0,6533,10131,com.jingdong.app.mall:WatchDogService,service,com.jingdong.app.mall/com.jingdong.common.watchdog.WatchDogService]

含義:

啟動(dòng)一個(gè)進(jìn)程,UserId=0,PID=6533,UID=10131,ProcessName=com.jingdong.app.mall:WatchDogService,Type=service,Component=com.jingdong.app.mall/com.jingdong.common.watchdog.WatchDogService

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棉饶,一起剝皮案震驚了整個(gè)濱河市厦章,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砰盐,老刑警劉巖闷袒,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異岩梳,居然都是意外死亡囊骤,警方通過(guò)查閱死者的電腦和手機(jī)晃择,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)也物,“玉大人宫屠,你說(shuō)我怎么就攤上這事』牵” “怎么了浪蹂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)告材。 經(jīng)常有香客問(wèn)我坤次,道長(zhǎng),這世上最難降的妖魔是什么斥赋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任缰猴,我火速辦了婚禮,結(jié)果婚禮上疤剑,老公的妹妹穿的比我還像新娘滑绒。我一直安慰自己,他們只是感情好隘膘,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布疑故。 她就那樣靜靜地躺著,像睡著了一般弯菊。 火紅的嫁衣襯著肌膚如雪纵势。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天误续,我揣著相機(jī)與錄音吨悍,去河邊找鬼。 笑死蹋嵌,一個(gè)胖子當(dāng)著我的面吹牛育瓜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栽烂,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼躏仇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了腺办?” 一聲冷哼從身側(cè)響起焰手,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怀喉,沒(méi)想到半個(gè)月后书妻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躬拢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年躲履,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了见间。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡工猜,死狀恐怖米诉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情篷帅,我是刑警寧澤史侣,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站魏身,受9級(jí)特大地震影響惊橱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叠骑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一李皇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宙枷,春花似錦、人聲如沸茧跋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瘾杭。三九已至诅病,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粥烁,已是汗流浹背贤笆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讨阻,地道東北人芥永。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钝吮,于是被迫代替她去往敵國(guó)和親埋涧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理奇瘦,服務(wù)發(fā)現(xiàn)棘催,斷路器,智...
    卡卡羅2017閱讀 134,716評(píng)論 18 139
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,953評(píng)論 2 89
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,113評(píng)論 1 32
  • 小時(shí)候我就特別向往濟(jì)南耳标,它是山東省的省會(huì)醇坝,我喜歡濟(jì)南并不是因?yàn)樗?chē)水馬龍,高樓林立次坡,而是喜歡那條風(fēng)景優(yōu)雅的芙蓉街...
    慧蜜xing閱讀 851評(píng)論 0 1
  • 2018年9月7日 鄒紅旭~常州新日催化劑有限公司 【日精進(jìn)打卡第41天】 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》1遍 共93...
    Zou_84fd閱讀 68評(píng)論 0 0