在android C/C++ native编程(ndk)中使用logcat
最近在研究Android 2.2 源代码的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 C/C++ native编程(ndk)中使用logcat相关推荐
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- 在Android NDK中使用OpenSSL
从 6.0 开始,Google 要求不要使用系统的 OpenSSL,请见:https://developer.android.com....因此,请不要再使用本文介绍的方法,请自行交叉编译 OpenS ...
- android stl,Android NDK中的c++ STL
田海立@CSDN 2020-11-25 Android NDK(Native Development Kit)提供了一套基于c/c++开发Android应用的工具.基于c/c++开发需要STL (St ...
- Android NDK 中堆栈日志 add2line 的分析实践
文章目录 目的 常用的辅助工具 分析步骤 参考 目的 Android NDK 中出现的 crash 日志分析定位,使用 addr2line 对库中定位so 动态库崩溃位置,定位到某个函数的具体的代码行 ...
- android ndk 编译c++11,Android NDK中的c++ STL
田海立@CSDN 2020-11-25 Android NDK(Native Development Kit)提供了一套基于c/c++开发Android应用的工具.基于c/c++开发需要STL (St ...
- 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
文章目录 一.系统调用 二.Android NDK 中的系统调用示例 一.系统调用 在 " 用户层 " , 运行的都是用户应用程序 ; 用户层 下面 是 驱动层 , 驱动层 下面是 ...
- android ndk使用c 11,使用c 11 std :: async在android ndk中使用不完整类型无效
我尝试使用以下函数来检查android ndk中是否支持std :: async以及windows中的cygwin.我使用的功能如下 机器:64位赢得8与cygwin Eclipse:Juno 4.2 ...
- socket android用法,Android NDK中socket的用法以及注意事项分析
与Java层中的套接字相比,本机层中的Socket可以选择更多的配置项,并获得关于当前拥塞状态的更准确的信息,那么 NDK中socket的用法以及注意事项分析,大家清楚吗?下文是爱站技术频道小编为大家 ...
- android源码中的ndk,如何在不需要Android操作系统源代码的情况下在Android NDK中创建新的NativeWindow?...
我想编译一个Android OpenGL控制台应用程序,您可以直接从控制台启动Android x86或从Android x86 GUI中的Android终端应用程序运行.如何在不需要Android操作 ...
最新文章
- python第三方库numpy-谁能介绍下Python生态中的第三方库NumPy
- 周例会会议、汇报框架
- windowbuilder点击按钮出现新界面_MIUI 10 负一屏,新界面新体验
- Qt Creator在浏览器中预览
- android和ios HybridApp的js交互
- 导致Android手机崩溃的壁纸,使用错误的壁纸会使你的Android手机崩溃
- 计算机硬盘权限,磁盘权限设置
- Hadoop组件启动的三种方式及配置SSH无密码登入
- 什么是tftp服务器? 如何搭建tftp服务器?
- css3直线运动_纯CSS3炫酷元素边框线条动画特效
- qt界面切换时出现的绿色背景修改
- 强制修改服务器时间,修改服务器时间脚本
- 二叉树遍历-层序-递归
- 神经网络预测鸢尾花的种类
- windows10上安装mysql(详细步骤)
- C语言:字母金字塔(输入一个大写字母,输出从A到这个字母的金字塔
- 景安 虚拟主机 自有SSL证书
- Oracle19c数据库如何冷备份,Oracle EBS系统整体备份(冷备份)
- 图形 2.1 色彩空间介绍
- 蓝海灵豚医疗器械管理软件 移动盘点APP
热门文章
- python学习面向对象_python学习之面向对象学习
- python自动化_Python自动化测试入门必读
- 015_JavaScript的四种迭代语句
- Oracle表空间查询及扩充表空间
- oracle11g中rman基本使用方法
- CAD2011软件安装资料及教程
- Maven插件tomcat7-maver-plugin
- centos 7 mysql 默认_centos7 mysql 5.6.30 默认配置文件
- jtessboxeditorfx 界面显示不出来_鞋友疑问:奥莱的AJ1本来有完整盒子,为什么不愿意给我?...
- 使用GPG校验sign签名