前提
由于实验需要,不得不使用单步调试。之前我一直都是绕道而行,最近几天我发现这个问题不能绕过去,最后选择了面对。这个过程是残酷的,试过了好多方法,都没有成功。最后真是花了九牛二虎之力才讲此配置成功,使用了android studio,Eclipse。在Linux上尝试过,Windows上也尝试过。希望我配置过程能让大家少走弯路,毕竟是亲身经历了的。废话不多说,切入正题。
环境配置
Windows上的配置和Linux上的配置过程都差不多。简单说明,下载的IDE工具我使用的是Eclipse,SDK,NDK。在Linux上面android studio配置了好久,使用这个IDE时需要注意的是gradle的配置。特别是从Eclipse上导出的项目导入到android studio里面。可能会由于版本不匹配的原因,这个版本不匹配主要表现在build.gradle配置文件中。如果不匹配那就从新配置下载地址,刷新之后,AS(对android studio的简称)会自动下载。之后配置和Eclipse还有些不一样,主要是格式,Eclipse使用了xml,而AS使用了groovy语言。
主要步骤:
- 设置NDK_PATH路径,在Windows下面是在环境变量那里添加,Linux是在home目录下.bashrc或者.bash中添加。
- 设置SDK_PATH路径,同上。
- 在IDE开发工具中添加这些路径。
接下来就是配置IDE环境。如下:
Eclipse下是在Windows-->Preferences里面。
NDK的配置:
NDK单步调试
我使用的环境是Windows + Cygwin。我想在Linux下还要更容易一些,个人见解,主要是因为android系统是出自Linux,很多驱动方面的东西都不用担心。现在配置NDK的Debug。
第一步:在Cygwin的.bashrc里面配置相关环境变量,我的是:
Cygwin将Windows下面的磁盘全部都以./cygdrive/磁盘符号,的形式给出的。而不是H:/...这个配置好了之后,将Cygwin下面的bin文件路径添加到Windows的高级环境变量中去,这样我们在Windows下面的命令提示符里面输入Linux的命令,如ls,ndk-build,ndk-gdb等命令。
如:
配置项目的Application.mk
需要配置的选项:
配置编译项
Project-->Properties
配置NDKROOT
配置Debug
右击项目,然后选择Debug as
进入Debug Configurations
双击C/C++ Application会生成一个可执行文件。
项目在编译之后就会在obj中生成app_process、gdb.setup、libc.so、libxxx.so以及linker,根据手机的支持选定armeabi或armeabi-v7a目录下的内容。
将gdb.setup复制一份,假设复制成gdb2.setup,并删除file obj/local/armeabi/app_process
target remote :5039这行数据。
然后在设置Debug Configuration,选择C/C++ Application下面的应用,选择Main选项卡,进行设置。
然后切换到Debugger选项卡里面设置:
设置Select other
这些设置好之后,对项目重新编译。Debug as运行项目。当项目启动之后,就在Cygwin中进入到项目的目录,使用ndk-gdb --verbose对运行的程序attach,最后就可以调试了。运行效果如下:
总结:
这是使用了两天配置的环境,希望对大家有一定的帮助,这也是我写下来的原因。时间不早了,该去吃饭了。