Kernel Log & Android Log
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
HALhardware abstraction layer硬件抽象层
用于链接driver和Camera Service
Kernel(内核)image sensor driver的实作。
Kernel Log
Printk流程
- 将所有的log输出到内核的Log Buffer该log buffer是一个循环缓冲区。其地址可以在内核中用log_buff变量访问。
- 根据设定的log级别决定是否将log输出到Console。
打印的log会走向两个位置
- Log Buffer该Buffer的内容可以在user space通过/proc/kmsg来访问。
- ConsoleUART Console和RAM Console。
Log优先级
<0>紧急信息此信息会引起系统崩溃 KERN_EMERG
<1>提示要马上采取某些行动 ALERT
<2>关键信息通常有严重的软件或硬件问题发生了 CRIT
<3>报告错误 ERR
<4>警告错误用于警告那些并不会造成严重的系统异常的问题 WARNING
<5>正常但值得注意的情况 NOTICE
<6>信息 INFO
<7>用于调试的打印 DEBUG
从上往下依次降低
egprintk(KERN_ERR “This is an error message!!”);
Logging tools
- ksmg adb连接
- dmesg adb连接
- UART log UART Cable连接
- last_kmsg
- MTKLogger SD卡
- logcat adb连接
- DDMs adb连接
Android Log
- 在Kernel层设计了4个logger设备及相应的驱动程序这4个logger设备分别采用了一块内存区域作为缓冲区用于存放main/system/event/radio.log
- 在Native层封装了对kernel log buffer的写入操作并且在写入前根据传入的TAG决定是否将log写入到Radio Log Buffer。作为Library向上层提供API。
- 为了方便Native应用程序以及共享库的开发提供了macro定义的Log wrapperNative层可以直接使用LOGV/LOGD/LOGI/LOGW/LOGE以及相关的API打印log到log buffer。
- 为了给java层提供接口在Native层实现了JN接口为了Java层服务。
- 在Java层对JNI接口进行了封装分别实现了android.util.log和android.util.EventLog类用于给Java Application以及Java library提供Log接口。
API与优先级
VVerbose仅在eng版本中打印在user和userdebug版本中都不会打印
DDebug Debug信息
I(Information) 打印通知信息的log
WWarning打印警告信息
EError 打印一般的错误信息
FFatal 会引起致命性错误
SSilent 用于logcat过滤logs级一般都不会输出
从上往下依次升高
Logging tools
- USRT Log UART Cable连接
- MTKLogger SD卡存储