ALOGV 的打印问题

本文介绍了Android系统中ALOGV等日志级别的控制方法,包括LOG_NDEBUG、LOG_NIDEBUG和LOG_NDDEBUG宏的作用。在编译时,-DNDEBUG标志默认关闭ALOGV,可以通过修改宏定义来开启不同级别的日志。调试阶段,可以通过#define LOG_TAG XX和#define LOG_NDEBUG 0打开ALOGV。在Android.bp文件中也可调整日志打印设置。

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

  1. 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 之前,进行#define LOG_TAG XX 和#define LOG_NDEBUG 0 打开ALOGV

Android.bp 中通过

cflags: [
    "-DNDEBUG",
], 

可以控制 ALOGV 的不打印,

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

也可以加上 #undef NDEBUG实现全部打印

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值