Android eclipse中程序调试 一:断点调试
用eclipse开发android程序的时,跟VS一样是可以断点单步调试的. 步骤如下.
1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoint菜单项即可.
2 在debug模式下运行程序进入调试状态:通过点击工具栏上的小虫按钮或者是在项目右键点击然后选择Debug As,Android Application菜单,启动程序的调试模式. 第一次运行调试模式eclipse会弹出如下确认窗口
当程序运行到你的断点地方时就会停下,这时可以按照下面的功能键按需求进行调试:
[1]快捷键(F8)直接执行程序,直到下一个断点处停止。 [2]快捷键(F5)单步执行程序,遇到方法时进入。 [3]快捷键(F6)单步执行程序,遇到方法时跳过。 [4]快捷键(F7)单步执行程序,从当前方法跳出。
查看断点时变量当前的值:右键点击对应的变量,在菜单上选择 watch 菜单项,变量的值就会出现在 expressions窗口中.
二、Android应用调试之工具
Eclipse Java编辑器
这个编辑器不但能够为开发者提供代码编写、语法纠错和实时编译等常用功能,而且还能够对Java源代码进行快速修改、重构等高级操作。
详讲:错误提示符(一个小电灯泡图标和一个红色的X)指出了错误所在的位置,在屏幕的右上角有一个红色的标记,它的作用是提示开发者该文档的某个位置存在错误。在文档的右边空白处还能看到一个红色的矩形框,它指明了错误所在的大致位置,如果代码量非常大,可以将竖直滚动条拖到这个红色矩形块的位置,快速定位错误。
Java和Dalvik编译、构建系统
Android应用程序最终是运行在手机(或者模拟器)的Dalvik虚拟机上的。因此对Android应用程序的编译和构建需要用到Java编译器和Dalvik字节码转换器。
Eclipse调试器
Android SDK提供了从Dalvik字节码到Java源代码的映射,这样开发者就可以直接使用Eclipse功能强大的调试器进行Android应用程序的调试。
详讲:Android SDK对于Eclipse调试器来说是完全透明的,可以在Eclipse中像调试普通Java应用程序那样调试Android应用程序。在代码中设置断点是常用的一种调试手段,在Eclipse中可以通过如下3种方法设置断点。
? ? ?
使用菜单命令。首先将光标放置到想要设置断点的行,然后执行菜单命令Run->Toggle Breakpoint.
使用键盘。选择想要设置断点的行,在键盘上按下快捷键Ctrl+Shift+B。 在编辑器中直接双击想要设置断点行左边的空白处。
执行菜单命令Run->Debug->Android Application,开始对程序进行调试。初始化过程与正常运行程序一样,如果需要会对项目进行重新构建,然后启动模拟器,加载程序。程序正常启动以后在模拟器上就会出现DebugTest的用户界面。程序将会在断点位置停止执行,Eclipse会自动切换到Debug布局。在Debug布局中包含了如下一些视图:
?
Debug
Debug标签页用来显示程序执行过程中的调用栈。在Debug标签页的工具栏上有一些功能按钮,提供了继续、暂停、终止、单步执行、逐过程执行和返回等功能。
?
Variables和Breakpoints
Variables标签页中可以显示出当前代码作用域内的所有变量值。Breakpoints标签页中列出了程序中所有的断点。
?
Editor
Debug布局中的编辑器与Java布局中的编辑器一样,只不过在Debug布局中当前执行的代码会高亮显示。
?
Outline
Outline视图可以显示出当前项目的结构图。
?
Console/Tasks/Properties
这三个视图位于Debug布局的左下角,其中Console(命令行)视图是最有用的一个,在程序调试过程中许多重要的信息都显示在Console视图中。 Logcat
Logcat是Android SDK中的一个通用日志工具。在程序的运行过程中可以通过Logcat打印状态信息和错误信息等。Logcat另外一个重要的用途是在程序启动和初始化的过程中向开发者报告进展状况。
当应用程序在模拟器中加载并启动时,Eclipse会自动切换到Debug布局,关于程序运行状态的各种信息就会出现在右下方的Logcat视图中。为了更加方便的浏览Logcat视图中的内容,可以用鼠标单击Logcat视图右上角的最大化按钮。Logcat视图中出现的信息,按照消息产生的顺序,最开始是关于模拟器启动的消息,接着是Android操作系统启动的消息,然后是各种应用程序启动消息,最后才是与加载程序启动相关的消息。在Logcat视图的工具栏中可以看到标记为V、D、I、W和E的几个按钮,他们的作用是对消息进行过滤。
? ?
V(Verbose)显示所有类型的消息;
D(Debug)显示Debug、Information、Warning和Error消息;
? ? ? I(Information)只显示Information、Warning和Error消息; W(Warning)只显示Warning和Error消息; E(Error)只显示Error消息。
Logcat视图中包含了如下列:
? ? ? ? ?
Time:用于显示消息产生的时间;
Priority(这一列并没有在标题栏中显示地标出)消息的级别(取值为D、I、W或者E,分别代表Debug、Information、Warning和Error); pid:产生消息的进程ID;
tag:消息产生来源的简短描述; Message:消息的详细内容。
注意:在程序开发过程中,如果需要多人协作进行错误的调试,那么就要对Logcat日志进行共享。导出Logcat日志的方法非常简单,首先在Logcat视图中选中想要导出的日志内容,然后鼠标单击Logcat视图右上角的向下箭头,这时就会弹出一个菜单,在菜单的最下方有一个名为Exports Selection as Text的菜单项,执行这个菜单项,就可以将选中的日志保存成一个文本文件。
Android Debug Bridge(adb)
adb是Android SDK中包含的一个可以直接对Android手机或者模拟器进行操作和调试的命令行工具。
DDMS(Dalvik虚拟机调试监控服务,Dalvik Debug Monitor Service)
DDMS是Android SDK中包含的一个窗口化的程序调试环境,它与Eclipse和Dalvik虚拟机紧密结合在一起。
详讲:见日志——常见的adb命令。
Traceview