Android中记录与调试——Logcat和Debug的使用

作者:张伟


     为了提高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日志信息。



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) {”这行代码处添加断点,以下三种方法均可。

在左边的蓝色区域右键出现菜单后点击第一项 Toggle Breakpoint

在左边的蓝色区域双击鼠标左键

将光标停留在该行代码的地方使用快捷键 Ctrl + Shift +  B

注:同样的操作方可取消程序断点。




3.       运行调试

将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

 





你可能感兴趣的:(Android应用开发系列教程,Android应用开发技巧)