您的位置:首页 > 移动开发 > Android开发

Windows环境下android平台native调试,从java debug 到 C++ (NDK DEBUG)

2011-10-26 13:28 756 查看
        在linux环境下调试native代码环境搭建成功后,紧接着又测试了在Windows环境下debug native代码,发现只有一两步不一样,别的步骤跟在linux环境完全一样,所以,这里这里只做差异化介绍了,细节可以参考上一篇(http://blog.csdn.net/dfqin/article/details/6901506)。

        首先要说明的是,在windows环境下,一样可以安装sequoyah插件方便你生成native工程,这样的话,跟在Linux环境下各方面配置基本是一样的。这里有一篇文章讲的很详细,(http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ )。按照这种方法搭建环境,然后可以直接参考上一篇文章的方法进行native调试。因为sequoyah对eclipse有版本要求,而我windows系统下只有3.5版本的eclipse,公司网速不方便下载3.7版本的,所以在windows下环境下,就没有使用sequoyah插件,生成编译.so文件时稍微麻烦一点。我的环境:windows
XP,cygwin(没找到版本号), eclipse 3.5,android sdk 2.2, NDK5r,CDT6.02(与eclipse对应)

        1.安装cygwin.在windows环境下想要编译linux源代码,必须要安装这个东东了,应该还有别的软件也可以,但基本都是用cygwin,可以模拟unix/linux环境,对源代码进行交叉编译。这个软件安装也有点小麻烦,不过网上有很多介绍安装的文章,可以参考。要记得在安装时要把gcc和make安装上。

        2.eclipse要安装cdt插件,为了支持C++开发,这个是必须的了。

        3.其它的android开发需要东东都要安装,目前环境要可以写一个支持native调用的android程序,并可以正确运行。

        4.先把自己的调用native的工程写好吧,用cygwin编译生成so文件,并成功运行。

        5.在同一个workspace下建一个C++工程,只一个空的C++工程就行了,一会有地方非要引入一个C++工程,但无法把android工程里的c++代码认为是一个工程,所以到时把这个空的C++工程引入就行了。可能安装sequoyah不需要这一步了,我没测试。

        6. 把android工程的AndroidManifest.xml文件的debuggable设为true(只有这样编译so时才可以生成gdbserver和gdb.setup两个). 把NDK目录下的ndk-gdb文件最后一行注释掉(同linux下)

        7.在cygwin下进入到工程目录,执行[your ndk path]/ndk-build  -C jni  这一步主要作用是重新执行jni目录下的mk文件编译源代码生成so文件,生成gdbserver文件,生成gdb.setup文件。

        8.在android工程java代码调用jni的代码处打上断点,c++jni实现处代码中也打上断点。现在debug你的android工程,使其在java断点处暂停。

9.在cygwin下进入工程目录,执行[your ndk path]/ndk-gdb.

        10.创建一个C++配置文件,这步跟上篇文章差不多了,debug as -> debug configuration->C++ application-> new lauch configuration.

11.Main选项卡中,project选你在第5步新建的那个空C++工程(如果装过sequoyah可能直接能选择当前工程,linux 下是可以),c++ application选择项目目录下的obj\local\armeabi\app_process文件,点下面的select other...,选standard create precess laucher.

12.点击debugger选项卡,配置同linux环境一样。配置完成后,点debug,即可启动gdbserver,等待上个十几秒(具体看console中的log输出),回到你的java代码断点处,按F6即可进入C++代码调试。不过速度是相当的慢,刚开始我还以为是出错了,很久没有反应,跟linux环境下差太远了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息