注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itas109的博客

http://blog.csdn.net/itas109

 
 
 

日志

 
 

为Android NDK开发测试中添加log支持  

2015-03-23 12:06:59|  分类: NDK |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.cstc.org.cn/templet/default/show_xwzx.jsp?article_id=122180&id=1657

 

软件运行时的log信息在软件研发的整个过程中具有十分重要的作用。开发时可以通过输出一些程序运行时信息帮助开发人员对构建中的软件进行调试,提高程序的排错效率。在测试阶段又可以帮助测试人员寻找程序bug的所在位置。维护阶段具有良好log支持的程序可以使最终用户提交开发者以极为有价值的信息,降低软件后期的维护成本。本文给出了一个简单方便的头文件和一套定义方法,使得NDK开发中可以方便的集成Android log。

  使用方法已经作为注释放在代码中了。将以下代码命名为mylog.h 之后添加到project中即可。注意在编写Android.mk 时要加入以下代码:LOCAL_LDLIBS+ =-llog 这样在链接中才能正确链接Android log的类库。

  源代码:

/*

 * mylog.h

 * utility for log

 *  Created on: 2012-2-27

 *      Author: liuyix

 * 使用说明:

 * 本头文件有两个开关:1.是否启用LOG 2.是否使用android log

 * 1)定义ENABLE_LOG 为一个非零值(通常为1)则启用LOG

 * 2)启用android log:以下为一个简单的示例,下面的宏定义写入要使用LOG的源文件中

 * ===========================

 * #define ENABLE_LOG 1 //开启ENABLE_LOG

 * #define ANDROID_LOG 1 //开启ANDROID_LOG

 * #LOG_TAG "mytag" //定义LOG_TAG

 * #include "mylog.h" //包含这个头文件

 * ============================

 * 使用printf输出LOG信息

 * #define ANDROID_LOG 0

 * 不显示LOG信息

 * #define ENABLE_LOG 0

 *

 */

#ifndef MYLOG_H_

#define MYLOG_H_

#if ENABLE_LOG

#if ANDROID_LOG

//define android log

#ifndef LOG_TAG

#define LOG_TAG "DEFAULT_TAG"

#endif

#include

#include

extern int __android_log_write(int prio, const char *tag, const char *text);

extern int __android_log_print(int prio, const char *tag,  const char *fmt, ...);

#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG  , LOG_TAG, __VA_ARGS__)

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO   , LOG_TAG, __VA_ARGS__)

#define LOGW(...) __android_log_print(ANDROID_LOG_WARN   , LOG_TAG, __VA_ARGS__)

#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , LOG_TAG, __VA_ARGS__)

#else

#include

#define LOGV(...) printf(__VA_ARGS__)

#define LOGD(...) printf(__VA_ARGS__)

#define LOGI(...) printf(__VA_ARGS__)

#define LOGW(...) printf(__VA_ARGS__)

#define LOGE(...) printf(__VA_ARGS__)

#endif /*ANDROID_LOG*/

#else/*ENABLE_LOG*/

#define LOGV(...)

#define LOGD(...)

#define LOGI(...)

#define LOGW(...)

#define LOGE(...)

#endif

#endif /* MYLOG_H_ */

  原理说明:充分使用了C中的条件编译的功能。通过判断预先define 变量使不同的宏定义在编译时对应不同的函数。

参考链接:

1. http://www.linuxgraphics.cn/android/ndk_opengl.html

2.Android NDK log.h

  评论这张
 
阅读(100)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017