Chinaunix首页 | 论坛 | 博客
  • 博客访问: 822055
  • 博文数量: 210
  • 博客积分: 10002
  • 博客等级: 上将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 09:56
文章分类

全部博文(210)

文章存档

2011年(1)

2010年(6)

2009年(65)

2008年(138)

我的朋友

分类: LINUX

2009-03-28 14:36:29

代码很多,关系也很复杂,通常我们调试程序的时候是无法跟踪到Android framework code里的,如果能调试跟踪Android source code将给我们这些初学者带来很多便利,本文将给出一个调试跟踪Android source code 的方法。

1.    首先,得到Android 源代码(可参考之前的文章--如何获取Android源代码并编译.doc),并且编译,得到output  file,在(Android source)/out目录下,也可通过别的途径获取Android source code (androidsrc.tgz为例) 和别人编译好的 output file(out.tgz)

 

2.    解压缩这两个 tgz 文件,并把解压出来的out 目录放到 myandroid 目录下,如下图所示。

 

3.    拷贝 myandroid\development\ide\eclipse\.classpath myandroid\.classpath.

 

4.    拷贝 myandroid\out\target\product\generic\*.img {Android SDK}\tools\lib\images 并且覆盖源文件.

 

5.    运行{Android SDK}\tools目录下的 emulator.exe.

 

6.    运行{Android SDK}\tools目录下的 ddms.bat。你可以看到下面的窗口,里面会列出当前emulator里跑的进程:

 

7.    启动 eclipse ,按照这个步骤 File->New->Java Project (不是 Android Project!) ->Create project from existing source 选到 myandroid 目录 .

 

8.    在经过长时间等待之后,Android source code将被导入project,正常情况下应该没有error,但是会有很多warning,如果有error后面的debug将不会成功,原因可能是output file out.tgz在解压得过程中出错,重新copy out.tgz,或者完整拷贝 out/ 目录到本地目录下,即可解决。

9.    选择想要调试的进程在 DDMS, phone 进程为例,ddms一定要在eclipse之前启动,否则eclipse启动的时候也会启一个ddms,会造成冲突。

 

10. eclipse, Run->Debug Configuration->Remote Java Application->New, 设置 Connection port to 8700 (DDMS’s 默认端口,你可以改变它).

 

11. 设置断点在source code,然后就可以像往常一样进行调试了。


阅读(2216) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-01-25 11:15:30

n多这个一样的文章,有没有哪位兄弟成功了写一个贴说一下啊,都是抄来抄去结果看了n多文章都没有搞成功

chinaunix网友2011-01-25 11:12:45

{Android SDK}具体是指什么位置呢?说清楚点啊,很多的sdk文件夹, {Android SDK}\tools目录下的 emulator.exe也不存在的

chinaunix网友2010-12-24 09:23:13

因为.classpath是隐藏文件(在类unix平台"."打头的都是隐藏文件). I'm come from 米狗社区--米狗族(http://www.meegozu.com), 你还有问题可以来这里找我。

chinaunix网友2010-11-05 11:27:00

求救!为什么我的源码目录下面的Development/ide/eclipse下面没有.classpath文件了。

ll113702010-01-26 15:55:04

拷贝 myandroid\out\target\product\generic\*.img 到 {Android SDK}\tools\lib\images 并且覆盖源文件 . 这个{Android SDK} 指的是编译的sdk吧?(out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86目录下)但是我并没用看到\tools\lib\ 下面有images目录?查看windos平台的sdk也没用这个目录 是怎么回事?