Android EventLog含义

一. 概述

在调试分析Android的过程中,比较常用的地查看EventLog,非常简洁明了地展现当前Activity各种状态,当然不至于此,比如还有window的信息。那么本文就列举以下am相关的tags含义。

本文涉及的源码类有EventLog.java, EventLogTags.java,另外tags格式的定义位于文件/system/etc/event-log-tags

如果在终端输入:

logcat -b events

那么会输出大量类似这样的信息:

06-01 13:44:55.518  7361  8289 I am_create_service: [0,111484394,.StatService,10094,7769]
06-01 13:44:55.540  7361  8343 I am_proc_bound: [0,3976,com.android.providers.calendar]
06-01 13:44:55.599  7361  8033 I am_create_service: [0,61349752,.UpdateService,10034,1351]
06-01 13:44:55.625  7361  7774 I am_destroy_service: [0,61349752,1351]
...

通过字面意思,就能得到不少信息量,比如am_create_service,创建service,但是后面括号中内容的具体含义,其实有很高的价值。 接下来通过一张表格来展示含义。

二. EventLog

2.1 ActivityManager

Num TagName 格式 功能
30001 am_finish_activity User,Token,TaskID,ComponentName,Reason
30002 am_task_to_front User,Task
30003 am_new_intent User,Token,TaskID,ComponentName,Action,MIMEType,URI,Flags
30004 am_create_task User ,Task ID
30005 am_create_activity User ,Token ,TaskID ,ComponentName,Action,MIMEType,URI,Flags
30006 am_restart_activity User ,Token ,TaskID,ComponentName
30007 am_resume_activity User ,Token ,TaskID,ComponentName
30008 am_anr User ,pid ,Package Name,Flags ,reason ANR
30009 am_activity_launch_time User ,Token ,ComponentName,time
30010 am_proc_bound User ,PID ,ProcessName
30011 am_proc_died User ,PID ,ProcessName
30012 am_failed_to_pause User ,Token ,Wanting to pause,Currently pausing
30013 am_pause_activity User ,Token ,ComponentName
30014 am_proc_start User ,PID ,UID ,ProcessName,Type,Component
30015 am_proc_bad User ,UID ,ProcessName
30016 am_proc_good User ,UID ,ProcessName
30017 am_low_memory NumProcesses Lru
30018 am_destroy_activity User ,Token ,TaskID,ComponentName,Reason
30019 am_relaunch_resume_activity User ,Token ,TaskID,ComponentName
30020 am_relaunch_activity User ,Token ,TaskID,ComponentName
30021 am_on_paused_called User ,ComponentName
30022 am_on_resume_called User ,ComponentName
30023 am_kill User ,PID ,ProcessName,OomAdj ,Reason 杀进程
30024 am_broadcast_discard_filter User ,Broadcast ,Action,ReceiverNumber,BroadcastFilter
30025 am_broadcast_discard_app User ,Broadcast ,Action,ReceiverNumber,App
30030 am_create_service User ,ServiceRecord ,Name,UID ,PID
30031 am_destroy_service User ,ServiceRecord ,PID
30032 am_process_crashed_too_much User ,Name,PID
30033 am_drop_process PID
30034 am_service_crashed_too_much User ,Crash Count,ComponentName,PID
30035 am_schedule_service_restart User ,ComponentName,Time
30036 am_provider_lost_process User ,Package Name,UID ,Name
30037 am_process_start_timeout User ,PID ,UID ,ProcessName timeout
30039 am_crash User ,PID ,ProcessName,Flags ,Exception,Message,File,Line Crash
30040 am_wtf User ,PID ,ProcessName,Flags ,Tag,Message Wtf
30041 am_switch_user id
30042 am_activity_fully_drawn_time User ,Token ,ComponentName,time
30043 am_focused_activity User ,ComponentName
30044 am_home_stack_moved User ,To Front ,Top Stack Id ,Focused Stack Id ,Reason
30045 am_pre_boot User ,Package
30046 am_meminfo Cached,Free,Zram,Kernel,Native 内存
30047 am_pss Pid, UID, ProcessName, Pss, Uss 进程

下面列举tag可能使用的部分场景

  • am_low_memory:位于AMS.killAllBackgroundProcesses或者AMS.appDiedLocked,记录当前Lru进程队列长度。
  • am_pss:位于AMS.recordPssSampleLocked(
  • am_meminfo:位于AMS.dumpApplicationMemoryUsage
  • am_proc_start:位于AMS.startProcessLocked,启动进程
  • am_proc_bound:位于AMS.attachApplicationLocked
  • am_kill: 位于ProcessRecord.kill,杀掉进程
  • am_anr: 位于AMS.appNotResponding
  • am_crash:位于AMS.handleApplicationCrashInner
  • am_wtf:位于AMS.handleApplicationWtf
  • am_activity_launch_time:位于ActivityRecord.reportLaunchTimeLocked(),后面两个参数分别是thisTime和 totalTime.
  • am_activity_fully_drawn_time:位于ActivityRecord.reportFullyDrawnLocked, 后面两个参数分别是thisTime和 totalTime
  • am_broadcast_discard_filter:位于BroadcastQueue.logBroadcastReceiverDiscardLocked
  • am_broadcast_discard_app:位于BroadcastQueue.logBroadcastReceiverDiscardLocked

Activity生命周期相关的方法:

  • am_on_resume_called: 位于AT.performResumeActivity
  • am_on_paused_called: 位于AT.performPauseActivity, performDestroyActivity
  • am_resume_activity: 位于AS.resumeTopActivityInnerLocked
  • am_pause_activity: 位于AS.startPausingLocked
  • am_finish_activity: 位于AS.finishActivityLocked, removeHistoryRecordsForAppLocked
  • am_destroy_activity: 位于AS.destroyActivityLocked
  • am_focused_activity: 位于AMS.setFocusedActivityLocked, clearFocusedActivity
  • am_restart_activity: 位于ASS.realStartActivityLocked
  • am_create_activity: 位于ASS.startActivityUncheckedLocked
  • am_new_intent: 位于ASS.startActivityUncheckedLocked
  • am_task_to_front: 位于AS.moveTaskToFrontLocked

Window相关

  • wm_task_moved: 位于TaskStack.positionTask()
    • TaskId, toTop ? 1 : 0, position;
    • 206,1,3,是指吧TaskId=206的移动到栈顶(即该栈的长度为4)
  • am_home_stack_moved: 位于ASS.moveHomeStack
    • CurrentUser, toFront ? 1:0 , homStackId, FocusedStackId
    • 0,1,0,0, 是指userId=0, home栈顶的StackId=0, 当前focusedStackId=0,

2.2 Power

Num TagName 格式 功能
2722 battery_level level, voltage, temperature
2723 battery_status status,health,present,plugged,technology
2730 battery_discharge duration, minLevel,maxLevel
2724 power_sleep_requested wakeLocksCleared 唤醒锁数量
2725 power_screen_broadcast_send wakelockCount
2726 power_screen_broadcast_done on, broadcastDuration, wakelockCount
2727 power_screen_broadcast_stop which,wakelockCount 系统还没进入ready状态
2728 power_screen_state offOrOn, becauseOfUser, totalTouchDownTime, touchCycles
2729 power_partial_wake_state releasedorAcquired, tag

部分含义:

  • battery_level: [19,3660,352] //剩余电量19%, 电池电压3.66v, 电池温度35.2℃
  • power_screen_state: [0,3,0,0] // 灭屏状态(0), 屏幕超时(3). 当然还有其他设备管理策略(1),其他理由都为用户行为(2)
  • power_screen_state: [1,0,0,0] // 亮屏状态(1)

下面列举tag可能使用的部分场景

  • power_sleep_requested: 位于PMS.goToSleepNoUpdateLocked
  • power_screen_state:位于Notifer.handleEarlyInteractiveChange, handleLateInteractiveChange

三. EventLog完整语义分析

在源码EventLogTags.java中,有大量类似的定义,那么括号中数字是什么含义呢? (以进程启动为例)

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

am_proc_start之后紧跟着的几个括号,其中括号里的内容格式如下:

(<name>|data type[|data unit])
(<名字>|数据类型[|数据单位])

那么(User|1|5) ==> 名字为User, 数据类型为1,数据单位为5,下面再来看看数据类型数据单位

3.1 数据类型

  • 1: int
  • 2: long
  • 3: string
  • 4: list

数据类型中int和string用得最多.

3.2 数据单位

  • 1: Number of objects(对象个数)
  • 2: Number of bytes(字节数)
  • 3: Number of milliseconds(毫秒)
  • 4: Number of allocations(分配个数)
  • 5: Id
  • 6: Percent(百分比)

3.3 实例解析

有了前面的准备知识,再来完整的看看如下语句:

am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3) am_proc_start: [0,9227,10002,com.android.browser,content provider,com.android.browser/.provider.BrowserProvider2]

含义如下:

进程启动: UserId=0, pid=9227, uid=10002, ProcessName=com.android.browser, 数据类型=ContentProvider, 组件=com.android.browser/.provider.BrowserProvider2

原文
http://gityuan.com/2016/05/15/event-log/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容