Eclipse调试Android源码

调试Java代码最常使用的是Eclipse, 它的好处是代码编辑功能强大,使用方便,最重要的是

可以设断点,单步跟踪,可视化地进行调试。另外它可以即时编译,发现代码中的错误。

独立的App调试比较简单,这里重点介绍调试android系统源码的方法。

步骤如下:

1)进入android源码根目录, 执行一次完整的编译过程。

2)执行以下命令

cp development/ide/eclipse/.classpath .
chmod u+w .classpath

3)打开eclipse安装目录下的eclipse.ini, 修改以下设置项

-Xms40m                            -> -Xms128m
-Xmx256m                         -> -Xmx512m
-XX:MaxPermSize=256m    -> -XX:MaxPermSize=256m

修改以上的项是为了给eclipse更大的java虚拟机内存空间,适应android庞大的代码量

4)运行eclipse

5)  执行File > New > Java Project, 新建一个Java工程(不是android工程), 如下图

java project

Project Name 填你想要的名字,可以写android. 取消勾选Use default location, 然后在Location里填入

android源码根目录的全路径(可以用Browse来选择)。

注意:android源码不能放在eclipse workspace下,否则会报错(感谢贤佳!)

然后单击Finish,  Eclipse会开始一个10-30分钟的加载和编译的过程。如果没有自动编译需要勾选

Project->Build Automatically.  完成后的情况如下:

project summaryProject Explorer里会显示出.classpath里所列的Build path (一个build path对应一个android源码里的Module)

以及androd源码的目录树。正常情况下应该没有编译错误发生,如果有错误最好都排除掉,这样以后我们

写代码就可以区分出来是新引入的问题,还是以前的问题。

常见的问题和解决办法:

找不到类:把类所在的Module的src目录加入到build path里,或者相应的jar包加入build path

需要注意的是,有些类是执行完整编译时生成在out目录里的,这时就需要把out目录下的相应目录加入build path

可以把有编译错误的代码从build path去掉, 这样Eclipse就不会编译这部分代码,也不会报错了

一些用不到的Module也可以去掉,这样可以节省资源,提高eclipse运行速度

6)用Eclipse跟踪调试代码,这是要介绍的重点。

首先要把编译好的rom刷入手机(也可以在模拟器里调试),连接上手机,进行DDMS视图:

ddms

devices窗口里会列出所有的可调试的app 进程,其中system_process是system_server进程,加载了framework的大部分

代码, phone和systemui里也有一部分framework的代码。

选中要调试的进程,然后执行Run->Debug Configurations..., 如下图:

debug config

 

新建一个 Remote Java Application的项目,填入需要的属性, 注意Port写8700, 点击Debug, 这时被调试

的进程前面就会有一个绿虫子图标,表示已经在调试状态。

接着进入Java视图, 在代码上加断点, 就可以开始调试了,:-), 是不是很方便?

常见问题:

有时候会有断点不生效的问题,这时可以多调试几个进程,把system_process, acore, phone, systemui都

加入调试 

需要说明的是,eclipse只是用于代码编辑和调试,真正的编译还是要在android 源码目录里用make完成

posted on 2012-11-07 14:10  Even的生活点滴  阅读(543)  评论(0)    收藏  举报

导航