如何在android CC++ native编程(ndk)中使用logCat.doc_第1页
如何在android CC++ native编程(ndk)中使用logCat.doc_第2页
如何在android CC++ native编程(ndk)中使用logCat.doc_第3页
如何在android CC++ native编程(ndk)中使用logCat.doc_第4页
如何在android CC++ native编程(ndk)中使用logCat.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011年度CSDN高校俱乐部“优秀主席”火热出炉! 点击了解英特尔云计算 2012年1月当选微软MVP的CSDN会员名单揭晓!如何在android C/C+ native编程(ndk)中使用logCat分类: 移动终端开发2011-11-26 17:2120人阅读评论(0)收藏举报/simple/?t896.html.最近在研究Android 2.3.3源代码的C/C+层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD(XXXXXXXX);,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cpp文件中加入:#include #define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG, keymatch, _VA_ARGS_)第三步:这样就可以使用了:LOGD(我要看到的调试信息_);这样,在logcat端看到的输出是:D/keymatch( 32):我要看到的调试信息_如果想改变输出中的各项内容,可以参考相应颜色的标示,比如,如果想定义LOGE,就可以把上面的ANDROID_LOG_DEBUG改成ANDROID_LOG_ERROR,同理,LOGI神马的也都以此类推:#define LOGV(.) _android_log_print(ANDROID_LOG_VERBOSE, ProjectName, _VA_ARGS_)#define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG , ProjectName, _VA_ARGS_)#define LOGI(.) _android_log_print(ANDROID_LOG_INFO , ProjectName, _VA_ARGS_)#define LOGW(.) _android_log_print(ANDROID_LOG_WARN , ProjectName, _VA_ARGS_)#define LOGE(.) _android_log_print(ANDROID_LOG_ERROR , ProjectName, _VA_ARGS_)当然,如果不嫌麻烦,也可以直接使用_android_log_print函数,而不define定义LOGxxx如果还想了解更详细的内容,也可以参考这篇文章: 在android 输出log 信息 用于调试另外,有文章称此方法在编译动态库的时候可能会出问题,会提示cannot find -llog的错误。意思是找不到liblog.so这个库文件。因此需要改成 LOCAL_LDLIBS:= -L$(SYSROOT)/usr/lib -llog 才可以正常编译。但是我这边编译动态库的时候,好像不用这样改也行,没发现编译时提示“cannot find -llog”的错误。如果您在实践过程中发现有这样的问题,可以参考该文章,链接在此:如何在android native编程中使用logCat2011年度CSDN高校俱乐部“优秀主席”火热出炉! 点击了解英特尔云计算 2012年1月当选微软MVP的CSDN会员名单揭晓!log函数封装,让WIN32和android ndk共用相同的log函数,方便调试分类: android2011-08-27 15:58124人阅读评论(3)收藏举报_log.hcpp view plaincopyprint?1. #ifdef _cplusplus 2. extern C 3. #endif 4.5. typedef int (* funcPtr)(const char * format, .); 6.7. typedef struct _Log 8. 9. funcPtr d; 10. funcPtr i; 11. funcPtr e; 12. LOG; 13. extern const LOG Log; 14.15. #ifdef _cplusplus 16. ; 17. #endif _log.ccpp view plaincopyprint?1. #include 2. #include 3. #include 4. #include _log.h 5.6. #define BUFFER_SIZE (1024 * 2) 7. static char db_bufferBUFFER_SIZE; 8.9. #ifdef WIN32 10.11. # define vsnprintf _vsnprintf 12.13. # define LOGD printf 14. # define LOGI printf 15. # define LOGW printf 16. # define LOGE printf 17. # define LOGF printf 18.19. #else / #ifdef WIN32 20.21. # include 22. # include / 这个是输出LOG所用到的函数所在的路径 23. # define LOG_TAG JNILOG / 这个是自定义的LOG的标识 24. # undef LOG / 取消默认的LOG 25.26. /Android.mk中要添加LOCAL_LDLIBS := -llog 27. /# 如果不包含这一句的话,会提示:_android_log_print 未定义 28. # define LOGD(.) _android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,_VA_ARGS_) / 定义LOG类型 29. # define LOGI(.) _android_log_print(ANDROID_LOG_INFO,LOG_TAG,_VA_ARGS_) / 定义LOG类型 30. # define LOGW(.) _android_log_print(ANDROID_LOG_WARN,LOG_TAG,_VA_ARGS_) / 定义LOG类型 31. # define LOGE(.) _android_log_print(ANDROID_LOG_ERROR,LOG_TAG,_VA_ARGS_) / 定义LOG类型 32. # define LOGF(.) _android_log_print(ANDROID_LOG_FATAL,LOG_TAG,_VA_ARGS_) / 定义LOG类型 33.34. #endif /#ifdef WIN32 35.36. #define db_print(_tag, _p, _format) 37. do 38. int n = 0; 39. va_list args; 40. va_start(args, _format); 41. vsnprintf(db_buffer, BUFFER_SIZE - 1, _format, args); 42. db_bufferBUFFER_SIZE - 1 = 0; 43. _p(_tag); 44. n = _p(db_buffer); 45. va_end(args); 46. return n; 47. while (0) 48.49.50. static int log_d(const char * format, .) 51. 52. #ifdef _DEBUG 53. db_print(debug: , LOGD, format); 54. #else 55. return 0; 56. #endif 57. 58.59. static int log_i(const char * format, .) 60. 61. db_print(info : , LOGI, format); 62. 63.64. static int log_e(const char * format, .) 65. 66. db_print(error: , LOGE, format); 67. 68.69. const LOG Log = 70. 71. log_d, 72. log_i, 73. log_e, 74. ; Android.mkjava view plaincopyprint?1. LOCAL_PATH := $(call my-dir) 2. include $(CLEAR_VARS) 3. LOCAL_MODULE := init 4. LOCAL_SRC_FILES := _log.c 5. LOCAL_LDLIBS := -llog 6. include $(BUILD_SHARED_LIBRARY) WIN32下测试main.ccpp view plaincopyprint?1. #include _log.h 2. int main(int argc, char * argv) 3. 4. L

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论