用eclipse调试android源代码

来源:互联网 发布:网络监控施工方案范本 编辑:程序博客网 时间:2024/06/11 19:58

上一篇详细记录了下载Android及内核源代码,并编译、运行模拟器emulator。


接下来,就到了要调试源代码的阶段了。在网上找了很多文章,加上自己尝试,总算成功了,所以分享出来,以备后忘。

(主要参考:http://blog.csdn.net/thl789/article/details/8033282)


在上一篇里,我使用了虚拟机从零开始搭建一个Android源代码的编译环境,所以像jdk这一类的工具都已经装好了,现在需要安装eclipse,这是一个强大的IDE编程环境,我们就用它来调试Android的源代码。


Ubuntu(还记得吗,我用的是ubuntu10.04-LTS)的软件中心里,能够找到eclipse,但是不要适用软件中心来安装,因为那上面的不是最新版本。


我们可以在http://www.eclipse.org/downloads/ 这里下载Eclipse。网站上有很多版本,其实他们不过是附带的插件不同而已,而插件我们是可以根据自己的需要来安装的,所以这里我选择的是:Eclipse Classic 4.2.2 这个版本。下载后,解压缩,文件夹里有个eclipse文件,在图形界面下直接双击就可以直接运行了。


【搭建Android开发环境】

以下摘自《http://mobile.51cto.com/android-227548_1.htm》

(1)打开Eclipse, 在菜单栏上选择

help->Install New SoftWare 出现如下界面:

点击 Add按钮,出现如下界面

输入网址: https://dl-ssl.google.com/android/eclipse/ (如果出错,请将https改成http)

名称: Android (这里可以自定义)

点击OK,将出现如下界面

点击 Next按钮 ,出现如下界面:

点击Next按钮,出现如下界面:

选择 I accept the terms of the license agreements点击Next,进入安装插件界面

安装完成后,出现如下界面

点击Yes按钮,重启Eclipse


【导入源代码】

在Eclipse里面导入Android的源代码,网上有些文章介绍这个过程,不过很多适用的是”Create project from existing source“,但是在我们下载版本的eclipse里面,其实你找不到这个选项,不过没关系,用下面的方法来做:


打开Eclipse,选择菜单: file -> new -> java project ,在弹出的面板上,勾掉”Use default locationg“选项,然后点击browse按钮,选择android源代码所在的路径。选择后,project name应该都是自动填好的,当然你也可以改,然后直接点击最下面的”finsh“。


Eclipse需要一段时间来加载代码,代码导入之后,就可以在编辑界面下看到工程目录了。


导入之后,Eclipse可能会报一些错误,网上有人说需要修改这些错误后才能调试,但我实测后发现其实不改也行,因为本来也没打算用Eclipse来编译源代码。


【DDMS】

选择Eclipse菜单:window->open perspective->DDMS,会启动DDMS窗口。此时再同时启动emulator,会看到DDMS窗口显示出emulator的运行实例以及相应的进程。


在DDMS窗口中点击你想要调试的进程,这里我选择的是”system_process“,选中它,你会看到它后面的端口号多了一个/8700。


然后在Eclipse菜单中选择:run->debug configurations,在弹出的窗口中选择”Remote Java Application“,双击这个选项,会新建一个远程调试链接,弹出的窗口中只要修改Port(端口)为:8700(就是前面选中进程的端口号),然后点击下面的”Debug“。


这时候,你再回到DDMS窗口(DDMS窗口、DEBUG窗口、代码窗口的切换在Eclipse的右上角),应该能看到刚才选中的进程图标上多了一个”Bug“,表示正在调试中。


【开始调试】

这里以解锁屏幕为例(我是跟网上学的,Android源代码太大,我自己完全找不到头绪),解锁屏幕的时候,Android会调用源代码路径下的:/frameworks/base/policy/src/com/android/internal/policy/impl/LockScreen.java中的onGrabbedStateChange函数。

所以,我们在Eclipse工作区中,打开frameworks/base/policy/src工程下的com.android.internal.policy.impl下的LockScreen.java,找到其中的onGrabbedStateChange函数,并在里面下一个断点(双击代码最前面的位置就可以)。

现在,尝试在emulator里面划动锁屏条解锁屏幕,eclipse会提示你进程已被暂停,申请呼出调试窗口。

如果到了这一步,就基本成功了,但是我在断点拦截后,打开Eclipse的工作区,发现有”Source not found“的提示,并且下面有一个”Edit Source Lookup Path“的按钮,点击按钮,选择add->java project,然后添加源代码路径,完成之后,就能看到断点处的代码和相关信息了。

完成!