android程序启动之后 eclipse ndk-gdb 连接,Eclipse+CDT+GDB调试android-NDK程序(补足六个汉字).docx...

Eclipse+CDT+GDB调试android NDK程序

Eclipse+CDT+gdb调试android ndk程序

先介绍一下开发环境,在这个环境下,up主保证是没有问题的。

ubuntu 11.10

eclipse 3.7(indego) for java

jdk 6

android sdk 2.2

andrid ndk r7

?

当然,在windows环境下通过cygwin等工具也是可以实现gdb调试的,我也确实实现过。但是性能实在太低,卡的根本没法用。Linux下直接用gdb调试本地方法是很流畅的。

再确定安装并配置好开发环境之后,就可以开始了。

首先得确定自己能够正常的运行一个ndk工程,连运行都成问题的话,也就谈不上什么调试了。

?

新建一个android项目,选择crete project form existing source,源代码位于

/home/shaodx/android/android-ndk-r7/samples/hello-jni,即ndk目录的samples/hello-jni。

?

Next>

Sdk target 就选2.2吧 ,其他的虽然没测试,应该也没什么问题。

?

Finsh

?

Hellojni项目极其简单,看代码就懂了。在activitie下建立一个textview,然后调用一个natvie方法来返回一个字符串,然后把textview的text设置为这个字符串。

为了方便看到调试后的效果和局部变量的变化情况,我加了几行对程序结果没影响的代码。

Java代码:

C++:

当然,这个时候直接运行的话,程序肯定会崩溃的。因为动态链接库还没编译好。Ndk根目录下的ndk-build负责编译so文件。首先进入项目所在目录,然后运行ndk-build即可。

效果如下:

出错了…..

Host 'awk' tool is outdated.

上网搜索之后的解决方案如下:

到/home/shaodx/android/android-ndk-r7/prebuilt/linux-x86/bin/目录下找到这个awk,file一下:

这个awk文件居然是64位版的,难怪之前说过期了。(google程序员粗心了吧)

解决方案居然是把这个awk删了就行了……………..

解决问题之后,换个姿势,再来一次

?

So文件存在于libs/armeabi/libhello-jni.so。

现在就可以运行程序了。

不过要是每一次修改c++代码都还要调用ndk-build的话,那也太麻烦了。介绍一个一劳永逸的方法。

首先,要给eclipse安装一个CDT,eclipse>help>install new software

下载地址为??? HYPERLINK "/tools/cdt/releases/indigo/" /tools/cdt/releases/indigo/

反正我是把所有的选项都给安装了,也花不了太多的时间。

然后是安装sequoyah? 地址为? HYPERLINK "/sequoyah/updates/2.0/" /sequoyah/updates/2.0/

这个就只需要安装Sequoyah Android Native Code Support 一项就可以了。

然后把当前项目转换为C++项目。

File>new>other:

?

Convert to a c/c++ Project

依照图中所示设置:

Finish。

这个时候,项目中的c++代码也会被识别了。一般这个时候就会爆出一堆错误,主要是gcc找不到jni.h头文件,同样也识别不了来自jni的一些函数和数据类型:

?

于是就要给gcc添加一个环境变量让它来找到jni.h了,环境变量名称为C_INCLUDE_PATH。这个名字不能乱写,windows下类似的环境变量叫做INCLUDE。

然后多刷新几次工程,这些错误就消失了。

接下来,进行C++代码的编译配置。

进入工程属性页,build command设置为ndk下ndk-build的完整路径。

?

将Behavior选项页下的build处的all替换为空格

?

接下来就可以直接运行了,每次运行的时候,就会自动把C++代码编译成so文件。同时,可以在eclipse中编写java代码和C++代码,很是方便。

?

?

?

往下的工作就真的跟调试相关了。

首先进入工程目录,然后运行ndk目录下的ndk-gdb。执行这一步骤时,应当先确保有模拟器在运行。如果有人更习惯于命令式的方法来调试程序的话,就可以直接用这个ndk-gdb来调试程序了。接下来的步骤就是把这个gdb调试图形化。

?

在eclipse下进入debug>debug configuration,选择C/C++ Applicatio

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值