android jni log
来源:互联网 发布:大数据画像系统 编辑:程序博客网 时间:2024/04/30 08:17
如果想要简洁一些,可以在底层自己定义
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, "tag", "string");
其它的依次类推,你懂的。
2.3 log.h如下:
/*
* Android log priority values, in ascending priority order.
*/
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;
/*
* Send a simple string to the log.
*/
int __android_log_write(int prio, const char *tag, const char *text);
/*
* Send a formatted string to the log, used like printf(fmt,...)
*/
int __android_log_print(int prio, const char *tag, const char *fmt, ...)
#if defined(__GNUC__)
__attribute__ ((format(printf, 3, 4)))
#endif
;
/*
* A variant of __android_log_print() that takes a va_list to list
* additional parameters.
*/
int __android_log_vprint(int prio, const char *tag,
const char *fmt, va_list ap);
/*
* Log an assertion failure and SIGTRAP the process to have a chance
* to inspect it, if a debugger is attached. This uses the FATAL priority.
*/
void __android_log_assert(const char *cond, const char *tag,
const char *fmt, ...)
#if defined(__GNUC__)
__attribute__ ((noreturn))
__attribute__ ((format(printf, 3, 4)))
#endif
;
Android4.1中,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 NDEBU
- Android JNI输出LOG
- android jni Log
- android jni log
- android jni打印log
- android jni Log
- android jni log
- Android JNI打印Log
- Android NDK JNI LOG 打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- android-----JNI中的log打印
- zendstudio 中加入 Xdebug
- 打印系统的环境变量
- SharePoint 多语言
- 普通java类获取request
- exit in c
- android jni log
- c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
- EV SSL(Extended Validation SSL Certificate)
- Python时间,日期,时间戳之间转换
- 中断子系统(2)APIC
- 计算机远程服务相关设置
- 调试备忘QT编程No such slot的解决方法
- 设置别名 linux
- 【黑马程序员】集合