最近在研究Android 2.2 源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:
第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog
第二步:在要使用LOG的cpp文件中加入:

[cpp] view plaincopy
  1. #include <android/log.h>
  2. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)

第三步:这样就可以使用了:LOGD("我要看到的调试信息^_^");

这样,在logcat端看到的输出是:
D/keymatch( 32):我要看到的调试信息^_^

如果想改变输出中的各项内容,可以参考相应颜色的标示,比如,如果想定义LOGE,就可以把上面的ANDROID_LOG_DEBUG改成ANDROID_LOG_ERROR,同理,LOGI神马的也都以此类推:

[cpp] view plaincopy
  1. #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "ProjectName", __VA_ARGS__)
  2. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "ProjectName", __VA_ARGS__)
  3. #define LOGI(...) __android_log_print(ANDROID_LOG_INFO , "ProjectName", __VA_ARGS__)
  4. #define LOGW(...) __android_log_print(ANDROID_LOG_WARN , "ProjectName", __VA_ARGS__)
  5. #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 C/C++ native编程(ndk)中使用logcat相关推荐

  1. Android Native 代码NDK开发学习笔记

    引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...

  2. 在Android NDK中使用OpenSSL

    从 6.0 开始,Google 要求不要使用系统的 OpenSSL,请见:https://developer.android.com....因此,请不要再使用本文介绍的方法,请自行交叉编译 OpenS ...

  3. android stl,Android NDK中的c++ STL

    田海立@CSDN 2020-11-25 Android NDK(Native Development Kit)提供了一套基于c/c++开发Android应用的工具.基于c/c++开发需要STL (St ...

  4. Android NDK 中堆栈日志 add2line 的分析实践

    文章目录 目的 常用的辅助工具 分析步骤 参考 目的 Android NDK 中出现的 crash 日志分析定位,使用 addr2line 对库中定位so 动态库崩溃位置,定位到某个函数的具体的代码行 ...

  5. android ndk 编译c++11,Android NDK中的c++ STL

    田海立@CSDN 2020-11-25 Android NDK(Native Development Kit)提供了一套基于c/c++开发Android应用的工具.基于c/c++开发需要STL (St ...

  6. 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )

    文章目录 一.系统调用 二.Android NDK 中的系统调用示例 一.系统调用 在 " 用户层 " , 运行的都是用户应用程序 ; 用户层 下面 是 驱动层 , 驱动层 下面是 ...

  7. android ndk使用c 11,使用c 11 std :: async在android ndk中使用不完整类型无效

    我尝试使用以下函数来检查android ndk中是否支持std :: async以及windows中的cygwin.我使用的功能如下 机器:64位赢得8与cygwin Eclipse:Juno 4.2 ...

  8. socket android用法,Android NDK中socket的用法以及注意事项分析

    与Java层中的套接字相比,本机层中的Socket可以选择更多的配置项,并获得关于当前拥塞状态的更准确的信息,那么 NDK中socket的用法以及注意事项分析,大家清楚吗?下文是爱站技术频道小编为大家 ...

  9. android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...

    我想编译一个Android OpenGL控制台应用程序,您可以直接从控制台启动Android x86或从Android x86 GUI中的Android终端应用程序运行.如何在不需要Android操作 ...

最新文章

  1. python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy
  2. 周例会会议、汇报框架
  3. windowbuilder点击按钮出现新界面_MIUI 10 负一屏,新界面新体验
  4. Qt Creator在浏览器中预览
  5. android和ios HybridApp的js交互
  6. 导致Android手机崩溃的壁纸,使用错误的壁纸会使你的Android手机崩溃
  7. 计算机硬盘权限,磁盘权限设置
  8. Hadoop组件启动的三种方式及配置SSH无密码登入
  9. 什么是tftp服务器? 如何搭建tftp服务器?
  10. css3直线运动_纯CSS3炫酷元素边框线条动画特效
  11. qt界面切换时出现的绿色背景修改
  12. 强制修改服务器时间,修改服务器时间脚本
  13. 二叉树遍历-层序-递归
  14. 神经网络预测鸢尾花的种类
  15. windows10上安装mysql(详细步骤)
  16. C语言:字母金字塔(输入一个大写字母,输出从A到这个字母的金字塔
  17. 景安 虚拟主机 自有SSL证书
  18. Oracle19c数据库如何冷备份,Oracle EBS系统整体备份(冷备份)
  19. 图形 2.1 色彩空间介绍
  20. 蓝海灵豚医疗器械管理软件 移动盘点APP

热门文章

  1. python学习面向对象_python学习之面向对象学习
  2. python自动化_Python自动化测试入门必读
  3. 015_JavaScript的四种迭代语句
  4. Oracle表空间查询及扩充表空间
  5. oracle11g中rman基本使用方法
  6. CAD2011软件安装资料及教程
  7. Maven插件tomcat7-maver-plugin
  8. centos 7 mysql 默认_centos7 mysql 5.6.30 默认配置文件
  9. jtessboxeditorfx 界面显示不出来_鞋友疑问:奥莱的AJ1本来有完整盒子,为什么不愿意给我?...
  10. 使用GPG校验sign签名