NDK环境搭建及单步调试注意点

17 篇文章 0 订阅

 在android下jni编程,可不止如何单步调试C/C++的代码,在网上一搜,NND各种方法,仔细一看 大本分雷同都是你抄抄他改改 大部分都是用的给予gdb和gdbserver remote调试的方式 可在windows下配置满足gdb的环境会遇到各种奇葩的问题,跟着网上的方式各种实验,我的电脑总是咋cygwin里面跑ndk-gdb的时候报这个错误,在工作闲暇之时我试了好几次都没能成功,因为这一步走不通就没法是gdb和gdbserver连接,也就无法调试C/C++部分的代码。

  有的时候不能抱着一个问题不放,换换思路或许会得到解决的方法,我记得刚开始的时候跑HelloJni的工程时,我当时只是搭建了NDK的编辑环境,就配置了一个NDK-r10和CDT,cygwin在ndk-r10里面有的,我电脑里面本来也装了,也没特别的配置,但是当时打断点是可以进入的,然后我就新建的了个新工程,从头开始,一步一步的实验,最后发现android的ndk单步调试没那么复杂,下面我列出几点注意点,ndk环境配置按照网上的配置就行了。

1.右击项目,选择C++build选项,添加NDK_BUILD=1



2.配置C/C++ build的Environment 将cygwin的相关文件include进去,cygwin是linux的环境,包含linux中的头文件,android就是linux的内核,所以必须包含cygwin的相关头文件才能编译,这个按需添加我这边添加了这几个文件夹中的头文件

CPLUS_INCLUDE_PATH=C:\cygwin64\lib\gcc\i686-pc-cygwin\4.9.2\include\c++;C:\cygwin64\lib\gcc\i686-pc-cygwin\4.9.2\include\c++\backward;C:\cygwin64\lib\gcc\i686-pc-cygwin\4.9.2\include;

C_INCLUDE_PATH=C:\cygwin64\lib\gcc\i686-pc-cygwin\4.9.2\include;



3. 在C/C++General下的Paths and Symbols下需要添加几个路径,

jni需要的两个路径:

C:\Program Files\Java\jdk1.7.0_79\include

C:\Program Files\Java\jdk1.7.0_79\include\win32

gcc需要的路劲:

D:\Self_D\Tools\develop\Java\android\adt-bundle-windows-x86_64-20140702\ndk\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.9\include

android platform需要的路劲:

D:\Self_D\Tools\develop\Java\android\adt-bundle-windows-x86_64-20140702\ndk\android-ndk-r10e\platforms\android-18\arch-arm\usr\include;

我这里配置的是android平台18的也就是4.3 如果要配置4.4则要添加android-19的路径,这个是根据工程jni目录下的application.mk中APP_PLATFORM的属性对应的。


还有就是如果这里写的是android-19 如果跑在18的模拟器上也debug不了,如果使用真机debug需要root过才可以。debug之前先run as application,让模拟机里面先运行起来,然后再debug,否则直接debug会报错,这里估计是因为先run app会将编译的obj/local/gdbserver以及so文件拷贝到android系统下的对应目录,然后debug时才能用gdb去连gdbsever,其实最新的ndk里面包含cygwin也就相当于使用的gdb/gdbserver的调试方式。






以上就是我目前的配置,但是我还是会将gdb和gdbserver如何调试的方法再实验一下,毕竟这个比较通用,貌似在linux下调试都是用的这类方式。待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值