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

第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog

第二步:在要使用LOG的cpp文件中加入:
#include <android/log.h>
#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编程中使用logCat》

在Android C/C++层添加LOG调试(LOGI\LOGD\LOGE...)输出支持相关推荐

  1. 在Android C/C++层添加LOG调试(LOGI/LOGD/LOGE

    最近在研究Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成L ...

  2. 在Android C/C++层添加LOG调试(LOGI\LOGD\LOGE...)输出支持 [ZZ]

    最近在研究Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成L ...

  3. Android Framework常用工具及LOG调试方法

    概述 Framework开发是一项非常繁琐复杂的工作,需要阅读大量的源代码,分析及其多的LOG信息来定位错误位置.这个时候如果使用一些工具或者知道如何定位重要LOG信息,就可以使一些复杂的工作变的简单 ...

  4. Android P HAL层添加HIDL实例(详细实现步骤)

    Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...

  5. Android 10 HAL 层添加HIDL实现过程

    本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...

  6. android 6.0 logcat机制(一)java层写log,logd接受log

    第一篇博客,讲的主要是c++,java中打印log,然后通过socket传给logd,然后logd是如何处理接受log的. 一.logcat常用命令 logcat -c 清除已有log信息 logca ...

  7. Android开发过程中在sh,py,mk文件中添加log信息的方法

    Android开发过程中在sh,py,mk文件中添加log信息的方法 在sh文件中: echo "this is a log info" + $info 在py文件中: print ...

  8. Linux 编译 libc log,在Android的源码中添加LOG

    想在Opencore代码中添加打印信息,但是使用OpenCore自带的PVLOGGER,有一定的局限,因为只能在创建对象调用相应的ThreadLogon()后才能使用.所以不能实现在任何函数中添加.于 ...

  9. unity3d android debug log,调试 – 如何在连接到设备时看到MonoDevelop Unity中的Debug.Log输出?...

    1)在您的设备上启用"USB调试",并通过USB电缆将设备连接到您的开发机器.确保您的设备与开发计算机位于同一子网掩码和网关上.此外,请确保设备上没有其他活动网络连接(即禁用移动/ ...

最新文章

  1. 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
  2. 成功解决 pypmml.base.PmmlError: (‘PmmlException‘, ‘Not a valid PMML‘)
  3. Spring泛型依赖注入
  4. goahead php,Goahead移植教程 | 学步园
  5. SAP CRM WebClient UI的on_new_focus应该怎么理解
  6. Zxing二维码重复扫描,不退出。
  7. 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
  8. mongodb分片+副本集集群环境搭建
  9. Linux初级运维(一)——Linux操作系统及常用命令
  10. 爬虫python能做什么-Python除了能做爬虫之外还能做什么?
  11. java类型占用字节数类型转换
  12. python优秀源码2019_SUCTF2019,python源码分析,漏洞原理
  13. mssql无法通过ip连接mysql_解决ADO通过指定IP地址连接到SQLServer数据库时总是失败问题...
  14. 大数据和数据挖掘是什么关系?
  15. [转载]每天早晨含姜片含出三大奇迹/姜的二十种食疗功/生姜克
  16. 区块链开发之智能合约设计模式
  17. 计算机九九乘法口诀表,九九乘法口诀表
  18. 人机工程学产品设计案例_产品设计|手持产品设计案例大放送,手持类的产品设计要点...
  19. 应用数学考研跨考计算机,数学专业考研三大方向_跨考网
  20. xcode 10.3 for Mac

热门文章

  1. 21号蒂姆-邓肯;作为父亲的波波维奇(张家玮)
  2. 91sp.vido.ws.php,104.27.179.100
  3. Angular学习笔记88:Angular12中使用crypto-js运行提示Warning
  4. 给学计算机的出国学生送什么礼物,美国大学生最喜欢收到的礼物清单 你知道吗...
  5. 图像分类 图像分割的评价指标(混淆矩阵 正确率 精准率 召回率 F1分数 IOU dice系数)
  6. 结构体类型和变量定义及基本操作
  7. 小数的二进制和十六进制表示
  8. Adobe Encore DVD彩蛋制作大全
  9. 【转】Android 手机连接台式电脑无线 Wi-Fi 上网
  10. 测试面试题集锦(二)| 测试工具篇(附答案)