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日志信息。

1
2
< Button android:id = "@+id/bt" android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content" android:text = "Log输出" />

3. 添加方法和输出

在Activity中添加为button添加事件响应:

1
2
3
4
5
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中添加一个随机数的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
< span style = "font-size:16px;" >// 增加事件响应
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);
          }
});</ span >

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点击事件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值