2012年11月28日星期三
一直想用调试的方式来弄清楚android内部运行的流程,我们都知道android的开发是包括java层和native层的,肯定也会涉及java代码和c/c++代码的调试。今天花了点时间对这两个方面做了下尝试。
1.环境
为了省事,今天下载了google官方提供的最新的开发工具(ADT bundle for mac),直接集成好了jdt/cdt/adt。

NDK也是直接下载的最新的:

平台用的是昨天编译的2.3.5
1.step by step
为了方便,直接使用ndk自带的工程
a).导入hellojni


b).进入hellojni目录编译native代码

(具体参见NDK中的doc)
c).在eclilpse中设置ndk

d).编译并安装apk


e).设置debug configuration
-------------native-----------------

选中当前的project

添加当前source path

debug打勾

close掉
------------设置断点-----------------
随便设置几个断点


选中这个项目,右鍵debug as,使用前面配置的configuration启动debug

-------------java-----------------
选中相应进程点小蟑螂图标

回到debug视图

在emulator 中重新运行hellojni
就会触发刚才的断点。


不过好像有时候还不能自动的切换,要自己点选相应的debug栈才能切换。
看它文档的意思,ndk的debug功能应该在近期的版本中进一步增强。
到此就ok了。