在Eclipse开发工具中调试程序的方法很多,使用Eclipse调试Android程序时需要注意·些细节上的问题。许多刚接触Android的开发者,在调试Android程序时总是不能迅速地找到程序的错误所在,Eclipse+ADT的开发环境中没有直接跟踪对象内容的方法,但是我们可以使用Google提供的ADT插件DDMS(Dalvik Debug Monitor Serrvice)在Eclipse上轻松地调试Android程序。DDMS为我们提供了很多功能,例如:测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息,LogCat,广播状态信息,模拟电话呼叫,接收SMsa虚拟地理坐标等等,下面我们通过DDMS来调试我们的Hello Androidl项目口
(1)将Eclipse开发工具的工作界面切换到DDMS标签。首先确定Eclipse开发工具右上角是否有DDMS标签,如果有,则直接点击该标签即可切换到DDMS工作界面,如果没有,则点击“Open Perspective按钮,选择 'Other...”命令按钮,打开“Open Perspective”对话框。在"Open Perspective”对话框中选择"DDMS”选项,然后点击`ok”按钮。
(2)在DDMS”界面中选择“Devices”标签,查看其菜单的功能,可以看到Debug Process(调试进程)、UPdate Threads(更新线程)、Update HeaP(更新堆)、Cause GC(引起垃圾回收)、Stop Process(停止进程)、Screen Capture"(屏幕截图)、Rest adb(重启Android Debug Bridge)菜单选项。
从中可以观察到Android程序运行时的各种状态,比如进程信息、线程分析、堆内存的占用,结束一个进程等。当然,这些操作都是在DDMs框架’下进行的,日常开发的程序是羌法执行调用的。如果adb调试桥运行不稳定,可以选择“Reset adb”来重新启动adb.exe”进程。’下面我们介绍如何使用DDMS的“Logcat”来调试Android程序,步骤如下:
(l)“Logcat”通过“android.util.Log类的静态方法来查找错误和打印系统口志消息。它是一个进行日志输出的API,我们在Android程序中可以随时为某一个对象插入一个Log,然后在DDMS中观察Logcat的输出是否正常。android.util.Log常用的方法有以下5个:
口Log.v(String tag,String msg);
口Log.d(String tag,String msg);
口Log.i(String tag,String msg);
口Log.w(Striyng t, String msg);
口Log.e(String tag,String msg);
这5种方法的首字母分别对应VERBOSE, DEBUG, INFO, WARN, ERROR当利用DDMS进行调试时,它们的区别并不大,只是显示的颜色不同,可以控制要显示的某一类错误,一般如果使用“断点”方式来调试程序,则使用Log.e比较合适·但是根据规范建议Log.v,Log.d信息应当只存在于开发过程中,最终版本只可以包含Log.i, Log.w, Log.e这三种日志信息。下面我们对"HelloAndroid"程序进行调试,首先修改“HelloAndroid.java”。
(2)点击“RUN”→“Debug”菜单命令,进入调试模式。
(3)切换到“DDMS”界面,点击“LogCat标签,即可查看我们刚刚在程序中打印的Log信息。用不同颜色表示了不同等级的信息,这样就可方便地对程序进行跟踪,使得调试Android程序更加方便。
在调试.Android程序时,同样可以通过设置断点的方式来调试程序。在启动应用程序进行调试时,Eclipse会自动切换到Debug透视图。毫无疑问,最常见的调试步骤是设置断点,这样可以检查条件语句或循环内的变量和值。要在java透视图的Package Explorer透视图中设置断点,双击选择的源代码文件,在一个编辑器中打开它。遍历代码,将鼠标放在可疑代码一行的标记栏(在编辑器区域的左侧)上,双击即可设置断点。
一旦找到错误发生的位置,你可能想知道在程序崩溃之前它在做什么。一种方法是单步执行程序的每行语句,直到运行到可疑的那一行。有时候最好只运行‘段代码,在可疑处停止运行,检查数据。另一种方法是声明条件断点,断点在表达式值发生变化时触发。我门设置条件“savedInstanceState=null”,当满足这个条什时,程序就会挂起。除此之外,在输入条件表达式时,也可以使用代码帮助。为了在Debug透视图的编辑器中计算表达式的值,选择设置了断点的那行代码,在上下文菜单中.通过try+shift+I或右键单击你感兴趣的变量并选择Inspect选项。在当前堆栈框架的上下文中会计算表达式的值,在Display窗口的Expressions视图中会显示结果。
要在Debug视图中挂起执行线程,选择一个运行线程,单击Debug视图上具栏中的Suspend。该线程的当前调用堆栈就会显示出来,当前执行的代码行就会在Debug透视图中的编辑器中高亮显示。挂起一个线程时,将鼠标放在java编辑器中的变量上,该变量的值就会在一个小的悬停窗口中显示出来。此时,该线程的项部堆栈框架也会自动选中,其中的可视变量也会在Variables视图中显示出来,可以通过单击Variables视图中合适的变量名来检查变量。
以上列举了一些在Eclipse编辑器中常用的调试方式,当然调试的方式很多,读者同样可以根据自己的需要选择不同的方式进行调试。希望读者能够根据不同的错误采取不同的方式进行调试,使错误能快速地出现在眼前。
本文转自【上海青大实训】,原文地址:http://www.shaccp.net/base/android/246.html