`
mapdigit
  • 浏览: 243080 次
文章分类
社区版块
存档分类
最新评论

Android NDK 开发教程七:调试

 
阅读更多

开发应用一个关键的步骤是调试,对于NDK的C代码调试有很多种方法,

  • 对于和Android平台相关性不大的部分代码,可以单独创建一个C/C++项目,编写测试代码,测试完成后,再编译成NDK动态库或静态库模块。
  • 使用NDK-GDB,NDK-GDB的命令行调试方法和GDB类似,网络有很多关于GDB的教程
  • 使用Eclipse+CDT+GDB调试android NDK程序 实时调试,不过这种方法设置起来不是十分方便,调试起来需要在GDB和Eclipse之间来回切换,适合于有经验的程序员。
  • 这里介绍一个开发嵌入式系统调试的“终极工具:-)”-printf. 开发嵌入式系统调试常用的也是最简单的方法,是使用printf 打印调试信息。

修改一下two-lib 的例子 ,使用first.c 中的first 函数实现一个加法计算器

这里我们想在调用first(int x,int y) 显示出传入的x ,y 值。Android NDK 中提供了一个Log库,其头文件为android/log.h ,可以提供Androd Java代码中的Log功能,也是可以在LogCat中打印信息。

具体方法如下:

1. 修改first.c ,添加合适的打印语句

#include "first.h"
#include <android/log.h>
 
int  first(int  x, int  y)
{
 __android_log_print(ANDROID_LOG_INFO, "MYPROG", "x = %d, y =%d", x,y);
 return x + y;
}


2. 修改android.mk 文件,添加需要链接的Log库

LOCAL_PATH:= $(call my-dir)

# first lib, which will be built statically
#
include $(CLEAR_VARS)

LOCAL_MODULE := libtwolib-first
LOCAL_SRC_FILES := first.c

include $(BUILD_STATIC_LIBRARY)

# second lib, which will depend on and include the first one
#
include $(CLEAR_VARS)

LOCAL_MODULE := libtwolib-second
LOCAL_SRC_FILES := second.c
LOCAL_LDLIBS := -llog
LOCAL_STATIC_LIBRARIES := libtwolib-first

include $(BUILD_SHARED_LIBRARY)

然后就可以编译Native C代码,运行这个例子,可以在LogCat看到打印的信息:

本例下载

分享到:
评论

相关推荐

    android ndk视频教程(传智播客内部培训视频)

    android ndk视频教程 传智播客内部培训视频 环境搭建 调试 非常详细

    详解如何使用VisualStudio高效开发调试AndroidNDK

    本文介绍了如何使用VisualStudio高效开发调试AndroidNDK,分享给大家,具体如下: 场景 场景一:Java层代码与SO的开发分为不同的程序猿负责,开发SO的时候基本上APK的其他文件不会修改。 场景二:主要代码就是C++...

    android开发资料大全

    新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献索引贴 实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料...

    Android 初学中阶高阶书籍_集合打包2

    巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文文档系列,Android的 Message机制(简单小结). Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,...

    Android 初学中阶高阶书籍_集合打包3

    巧,android_jni操作指南,Android_NDK开发实例,Android_RIL层剖析(官方翻译),Android2.2+API+中文文档系列,Android的 Message机制(简单小结). Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,...

    基于Android studio3.6的JNI教程之ncnn之人脸检测mtcnn

    代码链接: ...本代码可以在模拟器下进行跑。   环境: windows10 Android studio 3.6 ...实际操作的时候,首先基于linux把c++代码调试通,方便后续的android调试。 Android进行c++调试时,使用__andro

    android精品源码

    Android_GoogleMaps基础开发教程.pdf Android_GPS架构分析.doc android_jni操作指南.pdf android_JNI编程_一些技巧.doc Android_NDK开发实例.doc Android_RIL层剖析(官方翻译).doc Android与JUnit深入浅出.pdf ...

    bugsnag-android:用于Android应用程序的Bugsnag崩溃监控和报告工具

    Bugsnag的库可自动检测Android应用程序中的崩溃,收集诊断信息并立即通知您的开发团队,从而帮助您尽快理解和解决问题。 产品特点 自动报告未处理的异常和崩溃 报告 崩溃报告所附的,并深入了解用户的操作 以确定...

    android培训资料

    公司培训android的教程资料,包括android源代码结构分析、android fromwork详细分析、JNI/NDK、android开发常用的linux命令、eclipse调试技巧和快捷键、Git和repo

    网狐荣耀版开发使用常见问题解答

    选择菜单栏上的[Window-&gt;Perferences-&gt;Android-&gt;NDK]设置 NDK Loaction 为C:\android-ndk-r10d; 添加环境变量 NDK_ROOT 为:C:\android-ndk-r10d 在环境变量 PATH 下追加 :%NDK_ROOT%; 至此,网狐荣耀版开发环境...

Global site tag (gtag.js) - Google Analytics