ALOGV 的打印问题

log有了一些打印,具体可以参考system/core/include/cutils/log.h
 
1. 下面是控制哪些log输出的宏
 
/*
  * Normally we strip ALOGV (VERBOSE messages) from release builds.
  * You can modify this (for example with "#define LOG_NDEBUG 0"
  * at the top of your source file) to change that behavior.
  */
 #ifndef LOG_NDEBUG
 #ifdef NDEBUG
 #define LOG_NDEBUG 1
 #else
 #define LOG_NDEBUG 0
 #endif
 #endif
 

#ifndef LOG_NIDEBUG
 #ifdef NDEBUG
 #define LOG_NIDEBUG 1
 #else
 #define LOG_NIDEBUG 0
 #endif
 #endif
 

#ifndef LOG_NDDEBUG
 #ifdef NDEBUG
 #define LOG_NDDEBUG 1
 #else
 #define LOG_NDDEBUG 0
 #endif
 

2. LOG_TAG定义
 
/*
  * This is the local tag used for the following simplified
  * logging macros.  You can change this preprocessor definition
  * before using the other macros to change the tag.
  */
 #ifndef LOG_TAG
 #define LOG_TAG NULL
 #endif
 
最终写入是
 
/*
  * Send a simple string to the log.
  */
 int __android_log_buf_write(int bufID, int prio, const char *tag, const char *text);
 int __android_log_buf_print(int bufID, int prio, const char *tag, const char *fmt, ...);
 

总结:
 系统中的程序中输出log一般是到/dev/log/下的三个设备中,可以用logcat查看。
 对于init运行的程序则有两种方法查看到log信息:
 1.添加/system/bin/logwrapper,可以用logcat查看,例如
  service /system/bin/logwrapper /system/bin/rild
 2.添加console,像sh一样直接输出到console
  service console /system/bin/sh
       console
 
Android的编译参数中,加入了-DNDEBUG,也就是默认是no debug的,当然还需要LOG_NDEBUG LOG_NIDEBUG LOG_NDDEBUG这三个宏设置。
 
当-DNDEBUG被打上后,默认ALOGV会被禁止。
 
LOG_NDEBUG LOG_NIDEBUG LOG_NDDEBUG这三个宏控制
 
LOG_PRI(priority, tag, ...)
 
NDEBUG 是总开关,默认在编译参数中加入

打开ALOGV: #define LOG_NDEBUG 0
打开ALOGI:#define LOG_NIDEBUG 0
打开ALOGD:#define LOG_NDDEBUG 0
当然在调试阶段,小编还是喜欢这种方式
打开全部LOG:#undef NDEBUG

在#include <xxx> 之前,进行#define LOG_TAG XX  和#define LOG_NDEBUG 0 打开ALOGV 

Android.bp  中通过

    cflags: [
        "-DNDEBUG",
    ], 

可以控制 ALOGV 的不打印, 

默认ALOGD ALOGI ALOGE 都是打印输出的

猜你喜欢

转载自blog.csdn.net/u013377887/article/details/108531703