在Android 应用程序开发中我们经常需要调试程序,可以说调试在我们的日常开发中起着十分重要的作用,下面就以Elipse开发环境总结一下调试技巧。
一、Debug 断点调试
所谓断点调试就是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后可以一步一步往下调试。调试过程中可以看各个变量当前的值,如果出错的话,调试到出错的代码行即显示错误,停下。
调试步骤:
1.设置断点(三种方法):可以直接双击代码编辑器左边框添加、在代码编辑器左边框上右键弹出菜单选择Toggle Breakpoint、在光标停留的地方使用快捷键 Ctrl + Shift + B 将会在光标停留的这一行添加一个程序断点 (同样的操作方可取消程序断点);
2.开启调试会话:通过点击工具栏上的小虫按钮或者是在项目右键点击然后选择Debug As,Android Application菜单,启动程序的调试模式;
当程序运行到断点地方时就会停下,这时可以按照下面的功能键按需求进行调试:
- Resume 断续运行到结束(F8直接执行程序),直到下一个断点处停止。
- step Into 逐语句(F5单步执行程序),遇到方法时进入。
- step Over 逐过程(F6单步执行程序),遇到方法时跳过。
- step Return 单步返回(F7单步执行程序),从当前方法跳出。
- Run To Line 运行到光标处(Ctrl + R)。
如果想要查看断点时变量当前的值:右键点击对应的变量,在菜单上选择 watch 菜单项,变量的值就会出现在 expressions窗口中。
二、Log 日志输出
Logcat
Logcat是Android SDK中的一个通用日志工具。在程序的运行过程中可以通过Logcat打印状态信息和错误信息等。Logcat另外一个重要的用途是在程序启动和初始化的过程中向开发者报告进展状况。
可在Window->Show View->Other->Android->Log Cat 调出Logcat视图,在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消息。
输出日志: Log.i(TAG, strings);
说明:其中TAG 为日志标识符,一般用类名表示(方便查看此日志是某个类的输出),且一般声明为静态常量,stirngs 为要输出的字符串。例如:Log.i(TAG, strings)
当程序运行成功以后,在Logcat视图中会输出很多信息,我们可以创建一个过虑器用来过滤我们需要的信息。在Logcat视图中点击添加按钮+(create filter)弹出Log Filter窗口。
Filter Name:可以随意填写;
by log Tag:自己定义的日志标识符;
by pid:可以不用填写;
by Log level:选择你自己定义的日志,例如你的输出日志为 Log.i(TAG, strings),那么你就选择Info。
三、单元测试
1.配置AndroidMainfest.xml(两种方法)
第一种:
在application 中加入
<uses-library android:name="android.test.runner" /> <!-- 不要写入 activity 中 –>
在application 外加入
<!-- targetPackage 要与 mainfest 中的 package 的值相同,表示此包下的所有类都可以进行单元测试 -->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.test" />
第二种:
在application 中加入
<uses-library android:name="android.test.runner" /> <!-- 不要写入 activity 中 –>
在AndroidMainfest.xml下选择Instrumentation标签页,点击Add,弹出窗口,双击选择Instrumentation
选择完Instrumentation后,Instrumentation标签页的右边会出现一些东西让你选,只要选择图中红色边框的中的就可以。其中name选项框点击Browse后会弹出一个窗口,稍等片刻后为弹出一个选项,直接选择即可;
Target package选择你要测试的工程包。
2.编写单元测试代码
在targetPackage 包中建立单元测试类 如:在com.example.test中建立PhoneSMSTest.java。 此类必须继承AndroidTestCase类 且其中的测试方法必须以test 开头。如:testPhoneSMS()
package test; import android.test.AndroidTestCase; public class PhoneSMSTest extends AndroidTestCase { public void testPhoneSMS() { } }
运行测试方法:在大纲视图(Outline)中找到测试方法->右健->Run As ->Android JUnit Test 或者点击测试方法->右健->Run As ->Android JUnit Test 。