Kernel Log & Android Log

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

HALhardware abstraction layer硬件抽象层

用于链接driver和Camera Service

Kernel(内核)image sensor  driver的实作。

Kernel Log

Printk流程

  1. 将所有的log输出到内核的Log Buffer该log buffer是一个循环缓冲区。其地址可以在内核中用log_buff变量访问。
  2. 根据设定的log级别决定是否将log输出到Console。

打印的log会走向两个位置

  1. Log Buffer该Buffer的内容可以在user space通过/proc/kmsg来访问。
  2. 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

  1. ksmg   adb连接
  2. dmesg   adb连接
  3. UART log   UART Cable连接
  4. last_kmsg
  5. MTKLogger   SD卡   
  6. logcat   adb连接
  7. DDMs   adb连接

Android Log

  1. 在Kernel层设计了4个logger设备及相应的驱动程序这4个logger设备分别采用了一块内存区域作为缓冲区用于存放main/system/event/radio.log
  2. 在Native层封装了对kernel log buffer的写入操作并且在写入前根据传入的TAG决定是否将log写入到Radio Log Buffer。作为Library向上层提供API。
  3. 为了方便Native应用程序以及共享库的开发提供了macro定义的Log wrapperNative层可以直接使用LOGV/LOGD/LOGI/LOGW/LOGE以及相关的API打印log到log buffer。
  4. 为了给java层提供接口在Native层实现了JN接口为了Java层服务。
  5. 在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

  1. USRT Log   UART Cable连接
  2. MTKLogger   SD卡存储

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android