作者:张伟
为了提高Android程序的开发效率,找错误和调试是很重要的。一般来说,首先使用Android的Logcat输出Log信息来查找或定位程序的错误,还可以使用Eclipse的Debug调试工具来协助调试。
本文先介绍如何使用Android的Logcat在开发环境中打印Log信息,然后介绍如何使用Elipse设置断点来调试Android程序。
一、Android开发中Log信息的打印
在Android平台上,我们可以使用“Log”函数,来达到自己在程序码中加入一个个“记录点”或“检查点”,并可以通过开发环境中的“LogCat”工具来查看记录。当程序流程每次运行到“记录点”时,相应的“记录点”就会在开发工具记录中输出一条查错用的信息。开发者通过分析这些记录,来检查程序执行的过程、使用到的参数,是否与我们期望的结果符合。依此来判断程序码中可能出错的区域,以便对症根治造成问题的程序段。
android.util.Log常用的方法有以下5个:Log.v(),Log.d(),Log.i(),Log.w()以及Log.e()。根据首字母对应VERBOSE,DEBUG,INFO,WARN,ERROR。
|
颜色 |
消息 |
说明 |
Log.v |
黑色 |
任何消息verbose |
包括以下所有消息 |
Log.d |
蓝色 |
调试信息debug |
|
Log.i |
绿色 |
提示信息information |
不会输出Log.v和Log.d的信息,但会显示i、w和e的信息 |
Log.w |
橙色 |
警告warning |
注意优化代码,还会输出Log.e的消息 |
Log.e |
红色 |
错误error |
需要根据它查看栈的信息,并认真的分析错误 |
以上log按优先级从低到高的顺序至上而下排列的,换句话说,选择某一种输出类型后,表格中在它下面的类型也会输出。
下面是我做的一个简单的LogDemo。
1. 打开LogCat视窗
Eclipse菜单 -> Windows -> Show View ->Other -> Android -> LogCat,在控制台窗口出现LogCat视窗。
2. 在工程中实验
界面文件中添加一个Button按钮,用于点击按钮出现Log日志信息。
<Button android:id="@+id/bt" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Log输出" />
3. 添加方法和输出
在Activity中添加为button添加事件响应:
private Button button; button = (Button) findViewById(R.id.bt);private int UtilRandom(int bottom, int top) { return ((Math.abs(new Random().nextInt()) % (top - bottom)) + bottom); }Log 的使用格式如下:
Log.不同的打印方法的代号(String tag, String msg);
tag表示的是打印信息的标签,可以由用户自定义,也不是一定得为每个tag事先定义好一个记录标签,可以用当前的 Activity 名称来作为记录标签,总的说来就是为了便于显示的时候根据tag类型进行查看或筛选。msg表示的是需要打印或记录的信息。这里还增加了一个System.out.println方法,输出生成的随机数。
在Activity中添加一个随机数的方法:
// 增加事件响应 button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { Log.v("LogTest", "Verbose output"); Log.d("LogTest", "Debug output"); Log.i("LogTest", "Information output"); Log.w("LogTest", "Warnning output"); Log.e("LogTest", "Error output"); int random = UtilRandom(0, 5); System.out.println("生成的随机数是:"+random); } });
4. 运行LogDemo工程
当我们点击按钮时,会触发事件,在Logcat工具的视窗下有如下效果:
可以看到,指定的信息标签为“LogTest”的5种Log被打印输出,分别用他们对应的显示。
一般的Java程序的System.out.println方法都在Console中输出,在这里我们看到Console里只有android程序的运行信息,没有输出,而Logcat的选项卡System.out是专门输出的地方。
5. Log信息的筛选
方法一:Log Filter
LogCat页面系统打印了很多Log信息不方便定位各种不同的Log,这时候,之前定义的Log的tag标签就派上用场了。如图所示,点击Logcat右边的“+”符号。
弹出下方窗口后在FilterName 和 by Log Tag填写我们刚才打的Log标签“LogTest”,注意这两项都必需填写。
然后单击OK后,就可以在Logcat的“LogTest”选项卡中只能看到我们刚才打的LogTest的Log 。
方法二:Log类型
很容易注意到Logcat右边的5种Log和最开始我所介绍的颜色一一对应。
点击其中的某一个,根据上面表格中的优先级,Logcat会直接过滤剩下该种类型及其优先级更高的Log,例如点击“V”那么会保留所有Log,点击“E”只保留Error信息。
6. 在命令行中查看Log信息
打开cmd命令行窗口,先进入Android SDK 安装目录的tools文件夹,然后再执行命令“adb logcat”,可以查看Log信息。该方法可以用于远程查看Log记录。
7. Log信息的导出
打开cmd命令行窗口,先进入 Android SDK 安装目录,然后再执行如下命令“adb logcat > logfile.log”,即可将logcat记录导出值logfile.log文件中。
以上就是Log部分的内容。
二、Eclipse断点协助调试
1. 将以下代码添加入button点击事件中
switch (random) { case 0: Log.v("BreakPoint", "随机数为0"); break; case 1: Log.v("BreakPoint", "随机数为1"); break; case 2: Log.v("BreakPoint", "随机数为2"); break; case 3: Log.v("BreakPoint", "随机数为3"); break; case 4: Log.v("BreakPoint", "随机数为4"); break; }
2. 在“switch (random) {”这行代码处添加断点,以下三种方法均可。
3. 运行调试
在左边的蓝色区域右键出现菜单后点击第一项 Toggle Breakpoint
在左边的蓝色区域双击鼠标左键
将光标停留在该行代码的地方使用快捷键 Ctrl + Shift + B
注:同样的操作方可取消程序断点。
将Eclipse切换至Debug视图形式,Eclipse菜单 ->Windows -> Open Perspective -> Debug,按F11或点击下拉菜单选中需要调试的项目运行Debug 调试,让程序停留在添加的断点上。
如果添加多个断点,可以根据自己的需求,继续按F6运行至下一个断点处再停止。
通过Debug面板的BreakPoints查看当前共有几个断点。
Variables中显示程序运行到当前断点处的值,random在此处的值为4。
程序面板会时时跟踪调试程序的执行到的断点位置,并高亮显示。
程序员可以根据以上的方式来缩小程序的问题区域,对症下药。
以上就是这篇文章的全部内容。
参考文献:
http://blog.csdn.net/xys289187120/article/details/6636331
http://bbs.gfan.com/thread-1834459-1-1.html
http://www.cnblogs.com/menglin2010/archive/2011/12/20/2294338.html
http://wenku.baidu.com/view/d0dfc60790c69ec3d5bb7561.html