Android Native Code调试

弄了一天终于把调试android native code的环境给弄好了。

下面就把今天的所得给大家分享下,希望能对你有所帮助

1. 利用ndk下的gdb 命令行调试

2. Sequoyah + CDT 图形界面调试

 

具体的操作

1. 利用ndk下的gdb

1.) 安装cygwin,将ndk的路径加入/home/$USER/.bash_profile下

NDK=/cygdrive/d/android/ndk/android-ndk-r5b

export PATH=$NDK:$PATH

 

2.) 在cgywin下,进入应用所在的目录,例如%NDK%/samples/hello-jni。运行$NDK/ndk-build,编译成功之后会把so文件放发到libs/armeabi下

 

3.) 在window下,进入%NDK%/samples/, 运行android update project --path hello-jni,这个会生成ant脚本,再运行ant debug,编译成功,会在bin目录下生成debug版本的apk,adb install bin/*debug.apk,安装debug版本的apk到emulator或者手机上。确保androidmanifest.xml下,将application设置为debuggable=true。

 

4.) 在cgywin下,进入%NDK%/samples/hello-jni, 运行$NDK/ndk-gdb --start,  此时会在emulator或者device上启动hello jni的应用。如果应用已经启动,则不用加“--start”。此时就已经进入gdb调试模式,之后就跟在linux下gdb调试一样了

 

此种方法对于linux下的c/c++开发也许熟悉,但是对于从事java开发的你,却不是那么轻松,下面来看下第二种方法,图形界面,相信你一定会喜欢的,当然喜欢命令行的大牛们除外 :-)

 

2. Sequoyah + CDT 图形界面调试

1.) 安装Sequoyah, update site: http://download.eclipse.org/sequoyah/updates/2.0/ 

2.) 安装之后,右击hello-jni,选中android-tools->add native support

3.) 具体配置可以参考: http://www.eclipse.org/sequoyah/documentation/native_debug.php

4.) 上述步骤都成功之后,在项目的properties的builders选项会多了个CDT Builder. 编译项目,会出现ndk-build找不到。这个应该是由于ndk下的ndk-build只能在cygwin下运行,需要配置cygwin的运行环境变量,将ndk的路径加入其中。但是一直没有找到解决方法。这里用了个其他的方法,自己配置个新的c++ builder.具体可以参考http://student.csdn.net/space.php?uid=121497&do=blog&id=57864。将cdt builder去掉,改用自己配置的c++ builder,这样就可以在eclipse在自动编译native code

关于cdt builder不能工作的问题,只要在C/C++ build的build command里输入“bash %NDKs%/ndk-build”就可以了。那么就没有必要设置c++ builder了

 

找不到app_process的问题. 需要在cgywin下,执行ndk-gdb之后才会产生

 

5.) 按照 http://www.eclipse.org/sequoyah/documentation/native_debug.php配置好android debug & C++ debug之后,就可以开始你的图形界面的调试之旅。

 

过程是复杂的,却是值得。磨刀不误砍柴工。单步调试对于程序员来说,简直是妙不可言的事,很多之前只能靠猜测、打印信息的问题,就成为举手之劳了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值