概述
上层log我们主要关注events_log,main_log,radio_log和sys_log。这几个log的类型在alps/framework/base/core/java/android/util/Log.java中定义:
/** @hide */ public static final int LOG_ID_MAIN = 0;
/** @hide */ public static final int LOG_ID_RADIO = 1;
/** @hide */ public static final int LOG_ID_EVENTS = 2;
/** @hide */ public static final int LOG_ID_SYSTEM = 3;
/** @hide */ public static final int LOG_ID_CRASH = 4;
events_log,记录的是系统级别的events,比如GC、ActivityManager的状态、ANR和lowmemory等。
01-01 02:05:03.835 842 1985 I am_proc_start: [0,2968,10011,com.android.managedprovisioning,broadcast,com.android.managedprovisioning/.BootReminder]
上面是从events_log随机抽取的,按列依次是时间、报告log的进程id、线程id、log级别是Info、events log tag,后面的信息就根据tag定义的不同而不同了。
tag来自于/system/etc/event-log-tags,如am_proc_start的定义为:
30014 am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3)
这样上述tag之后的信息就明确了,0是User id,2968是start的应用的PID,10011是start的应用的UID,start的应用的进程名为,com.android.managedprovisioning,启动类型为broadcast,即因为接收到广播而启动的,启
动的Component Name为com.android.managedprovisioning/.BootReminder。
而如何将这一句log与代码中对应起来呢,就需要明白event-log-tags的生成过程。
alps/frameworks/base/services/core/java/com/android/server/am/EventLogTags.logtags会被编译生成
alps/out/target/common/obj/JAVA_LIBRARIES/services.core_intermediates/src/java/com/android/server/am/EventLogTags.java,/system/etc/event-log-tags是代码中EventLogTags.logtags的汇总,
EventLogTags.java是为了参与Java文件的编译,am_proc_start在EventLogTags.java中对应为:
/** 30014 am_proc_start (User|1|5),(PID|1|5),(UID|1|5),(Process Name|3),(Type|3),(Component|3) **/
public static final int AM_PROC_START = 30014
代码中打印该条log的地方(ActivityManagerService.java的startProcessLocked()方法):
EventLog.writeEvent(EventLogTags.AM_PROC_START,
UserHandle.getUserId(uid), startResult.pid, uid,
app.processName, hostingType,
hostingNameStr != null ? hostingNameStr : "");
分析events_log需要熟悉常用的tag,上述过程可以将tag与代码对应起来。
main_log,不多讲,最普通最基础最常用的log。
sys_log,顾名思义,system log,一般是framework层的log,核心服务之类的,代码中调用的log打印类为Slog。
radio_log,RIL层相关的log,涉及到通话、网络切换、信号、短信、数据业务等,代码中调用的log打印类为Rlog。
最后
以上就是光亮烧鹅为你收集整理的Android系统LOG分析的全部内容,希望文章能够帮你解决Android系统LOG分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复