lxp 发表于 2017-7-12 10:22:33

android C/C++ native编程中logcat的使用

本帖最后由 lxp 于 2017-7-22 10:18 编辑

一.ALOG参考:system/core/include/cutils/log.h以ALOGV为例:#ifndef ALOGV
#define __ALOGV(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
#if LOG_NDEBUG
#define ALOGV(...) do { if (0) { __ALOGV(__VA_ARGS__); } } while (0)
#else
#define ALOGV(...) __ALOGV(__VA_ARGS__)
#endif
#endif/*
* Basic log message macro.
*
* Example:
* ALOG(LOG_WARN, NULL, "Failed with error %d", errno);
*
* The second argument may be NULL or "" to indicate the "global" tag.
*/
#ifndef ALOG
#define ALOG(priority, tag, ...) \
LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
#endif/*
* Log macro that allows you to specify a number for the priority.
*/
#ifndef LOG_PRI
#define LOG_PRI(priority, tag, ...) \
android_printLog(priority, tag, __VA_ARGS__)
#endif#define android_printLog(prio, tag, fmt...) \
__android_log_print(prio, tag, fmt)

#define android_vprintLog(prio, cond, tag, fmt...) \
__android_log_vprint(prio, tag, fmt)

__android_log_print(prio, tag, fmt)在 liblog 中的 logd_write.c 中实现了.再来看一下LOG_NDEBUG#ifndef LOG_NDEBUG
#ifdef NDEBUG
#define LOG_NDEBUG 1
#else
#define LOG_NDEBUG 0
#endif
#endif

LOG_NDEBUG受到NDEBUG的影响因此,想在logcat中利用ALOG打印log,分以下2步1.在c,c++层添加#include <cutils/log.h>

#undef NDEBUG    //取消NDEBUG的定义
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

在文件中定义TAG#define LOG_TAG "ProjectName"这样就可以在logcat中查看Tag为ProjectName的日志
3.在需要调用Log的地方执行:ALOGV,ALOGD,ALOGI,ALOGW,ALOGE。
二.直接调用__android_log_print1.在Android.mk文件中加入LOCAL_LDLIBS := -llog 或 LOCAL_SHARED_LIBRARIES := \ libutils \ liblog \ libcutils2.在CPP文件中加入#include <android/log.h>

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "ProjectName", __VA_ARGS__);
ANDROID_LOG_DEBUG是LOG的等级中的debug其他等级分别是Verbose,Debug,Info,Warn,Error
"ProjectName"是Log中的Tag
__VA_ARGS__是要打印的内容
3.直接在代码中调用LOGD("XXXXX"),就可以在logcat中查看调试信息
页: [1]
查看完整版本: android C/C++ native编程中logcat的使用