Eclipse调试技巧总结
一、调试APK
准备工作:Eclipse,APK的源代码,真机。
注意:手机里的apk和源代码版本要一致,也就是说手机里面的应用是用调试时用到的代码编译出来的,否则断点可能会不生效。
步骤:
1. 新建一个android工程:
代码的路径可以直接选择服务器上代码的地址,这样的好处是改了之后直接在服务器上编译,当然这样没有从本地加载代码快。
注意:工程建好之后可能会有红色的叉叉不过对后面的调试丝毫不影响。
2. 断点设置
- 手机连接电脑,在DDMS中应该能看到进程列表选中你需要调试的APK,点击绿色的小虫子,这样你就可以对这么进程进行调试了。
- 在DDMS里面设置好之后就可以添加断点了,在需要停的地方双击即可:
在debug里面,可以看到刚设置的断点:
注意:Eclispe里面可以使用条件断点,上图的断点列表中右击—》Breakpoint Properties,在conditional里面输入表达式,则只会在满足这个条件的时候才停下来。
3. 调试,变量值观察
- 设置好断点之后就就开始操作手机,跑到了断点处就会停下,
F5 单步(进入函数)
F6 单步(不进入函数)
F7 走到return
F8 继续执行,直到下一个断点
2.观察变量值两种方法
- 只需要把鼠标放上去就可以看到变量值
表达式的值也是可以看得到的,鼠标选中表达式,右击—》Inspect或Ctrl+Shift+I
2. 通过变量窗口观察
注意:这里有个很不错的功能,动态修改变量值,有时候改动比较小的话,不必每次都重新编译烧到手机里面看效果,可以动态修改变量值来验证。
在上面的窗口右击—》change value输入你需要的值
如我把9527改为9528,程序就会走9528分之了
1. 断点停住之后可以看到当前有哪些线程在跑,
还可以看到函数的调用栈,个人感觉这个功能很好用,大家细细体会。
二、调试framework
- 在eclipse里面新建一个java 工程【注意是java工程,不是android工程】,代码路径填到base目录。
- 在apk工程中做如下设置:
右键---》Debug As---》Debug Configrations
在 Remote java Application里面设置刚建好的Framework的工程
然后就可以在Framework的代码里面设置断点了,如图在core\java\android\widget\AdapterView.java里面停住了
三、调试System Server
1、在apk工程中做如下设置:
右键---》Debug As---》Debug Configrations在端口处填上system_process
的端口号,如图所示,这里是8637
设置好的界面如下,点击apply在点击Debug
这样在DDMS的进程列表里面system_process就打上了小虫子
然后就可以打断点调试了,下图是Policy模块中解锁相关的代码。
policy\src\com\android\internal\policy\impl\MSimLockPatternKeyguardView.java
总结:以上是平时调试过程中得一点经验,希望对大家有所帮助。Eclispe是个功能很强大的开发工具,提供两人各种快捷键操作,而且还可以自己安装各种插件来扩充它的功能。一个好的工具能极大的提高工作效率。