无论什么样的程序开发过程中,出现错误都是不可避免的,一般情况下,语法错误会被开发环境检测到,并能及时的提示我们错误的位置以及修改的方法,但是逻辑错误就不是那么容易被发现了,通常逻辑错误的定位和分析是一件非常困难的事情。

所以在学习Android过程中,继学习它的程序结构,写了HelloWorld和一些简单的界面布局程序之后,我选择研究一下它的调试工具。LogCat就是其中一个。LogCat是用来获取系统日志信息的工具,它可以捕获的信息包括Dalvik虚拟机产生的信息,进程信息,ActivityManager信息,PackagerManager信息,Android运行时信息和应用程序信息等等。

我们可以在打开Eclipse之后,选择Window –> Show View ->Other菜单,然后在Android->LogCat中选择LogCat,这样LogCat便会在Eclipse的下方区域出现了。

其中,在LogCat的右上方的5个字母分别表示了5种不同类型的日志信息(并以不同颜色加以区分,级别越高,颜色越突出):

1. [V]:详细(Verbose)信息,输出颜色为黑色

2. [D]:调试(Debug)信息,输出颜色是蓝色

3. [I]:通告(Info)信息,输出颜色为绿色

4. [W]:警告(Warn)信息,输出颜色为橙色

5. [E]:错误(Error)信息,输出颜色为红色,这里错误信息的级别最高,其次是警告信息,然后是通知信息和调试信息,级别最低的是详细信息。

6.[assert],新版本加入的。

在LogCat中,我们可以通告这5个字母图标选择要显示的信息类型,级别高于所选类型的信息也会在LogCat中显示,但级别低于所选类型的信息则不会被显示。

在Android程序调试过程中,首先要引入android.util.Log包,然后使用用来记录详细信息的Log.v()、用来记录调试信息的Log.d()、用来记录通告信息的Log.i()、用来记录警告信息的Log.w()、用来记录错误信息的Log.e()这样五个函数在程序中设置“日志点”。这些函数的第一个参数是日志标签TAG(就是在你要测试的位置需要一个常量用来标记,标记的名字就是所谓的日志标签),第二个参数是实际的信息内容。每当程序运行到我们设置的“日志点”时,应用程序的日志信息便被发送到LogCat中,我们就可以根据“日志点”显示的信息与预期我们在函数中设置的信息内容是否一致来判断程序是否存在错误,这样就能根据“日志点”来迅速找到错误的“出事地点”了。

在下面的程序中,演示了Log类的具体使用方法:

 package wt.relativeLayout;

 import android.app.Activity;

 import android.os.Bundle;

 import android.util.Log;

 import android.widget.Button;

 import android.widget.EditText;

 import android.widget.TextView;

 public class RelativeLayout extends Activity {

 final static String TAG = "LOGCAT";

 private TextView tv = null;

 private EditText et = null;

 private Button btn1 = null;

 private Button btn2 = null;

     @Override

     public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.main);

         tv = (TextView)findViewById(R.id.label);

         et = (EditText)findViewById(R.id.entry);

         btn1 = (Button)findViewById(R.id.cancel);

         btn2 = (Button)findViewById(R.id.ok);

         tv.setText(R.string.name);

         btn1.setText(R.string.button1);

         btn2.setText(R.string.button2);

         Log.v(TAG, "This is Verbose");

         Log.d(TAG, "This is Debug");

         Log.i(TAG, "This is Info");

         Log.w(TAG, "This is Warn");

         Log.e(TAG, "This is Error");

     }

 }

程序运行后,LogCat捕获得到应用程序发送的日志信息,显示结果如下图:

通过结果我们发现,即使我们事先选择了某个特定的日志信息的级别,产生的日志信息还是有很多,需要我们逐条去阅读,给我们带来很大的麻烦。这时我们就要用到一个LogCat提供的“过滤”功能了,在右上角的“+”号和“-”号,分别是添加和删除过滤器。我们可以根据日志信息的标签(Tag)、产生日志的进程编号(Pid)或者信息等级(Level),对显示的日志内容进行过滤。在实际使用中,我们最好为每一个类声明一个字符串常量TAG,这样在Logcat中我们可以容易区分不同的类的日志了。

下面使用在LogCat右上角的“+”号,添加一个名为LogcatFilter的过滤器,并设置过滤条件为“标签=LOGCAT”,下图为过滤器的具体设置方法:

过滤器设置好后,LogcatFilter过滤后的日志信息如下图,这样,无论什么类型的日志信息,属于哪个进程,只要标签为LOGCAT,都将显示在LogcatFilter内。

运行测试后,对logCat中的log通过配置l过滤器进行过滤

这样,调试工作就完成了。

57. Android之程序调试LogCat (转)的更多相关文章

  1. Android真机调试手动添加程序包的LogCat

    android真机调试有时候看LogCat 时,有时候那个跑的本程序的LogCat 没有出现而是 出现的是" All messages (no filters) " .此时 的Lo ...

  2. [安卓][转]Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  3. Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  4. Eclipse+CDT+GDB调试android NDK程序(转)

    Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...

  5. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  6. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  7. Android APK程序的smali动态调试

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622 一.Apktool的下载和安装 Apktool是Android逆向分 ...

  8. Android卸载程序之后跳转到指定的反馈页面

    一个应用被用户卸载肯定是有理由的,而开发者却未必能得知这一重要的理由,毕竟用户很少会主动反馈建议,多半就是用得不爽就卸,如果能在被卸载后获取到用户的一些反馈,那对开发者进一步改进应用是非常有利的.目前 ...

  9. 用 Eclipse 开发 Android 应用程序

    转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...

随机推荐

  1. git push上传代码到gitlab上,报错401或403

    之前部署的gitlab代码托管平台,采用ssh方式连接gitlab,在客户机上产生公钥上传到gitlab的SSH-Keys里,则git clone下载和git push上传都没问题,这种方式很安全. ...

  2. 叫板OpenStack:用Docker实现私有云

    看到各大厂商的云主机,会不会觉得高大上?目前大公司的主流方案是OpenStack,比如某个公司的私有云

  3. js区分鼠标单双击 阻止事件冒泡

    function clickOrDblClick(obj) { count++; if (obj != undefined) { var rowStr = $.trim($(obj).find(&qu ...

  4. Tomcat部署学习

    tomcat也可以称为catalina catalina_home就是tomcat安装路径:D:\Program Files\apache-tomcat-8.0.36\bin     windows下 ...

  5. node基础06:回调函数

    1.Node异步编程 Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,No ...

  6. mybatis 3.2.8 + log4j2.0.2 控制台输出sql语句

    mybatis3.2.7有一个bug,使用log4j2 (2.0.2)版本时,会找不到类 ,导致启动失败,详见 https://github.com/mybatis/mybatis-3/issues/ ...

  7. 离线安装 Cloudera ( CDH 5.x )

    要配置生产环境前,最好严格按照官方文档/说明配置环境.比如,官方说这个安装包用于RETHAT6, CENTOS6,那就要装到6的版本下,不然很容易出现各种各样的错. 配置这个CDH5我入了很多坑,最重 ...

  8. GET请求参数为中文时乱码分析

    问题描述 近期做任务时,跟后端联调时遇到一个问题,前端发送get请求,当参数值有中文时,请求失败,请求参数变为乱码.(ps:一般当参数有中文时,很少使用get请求,而是使用post请求来传输数据,请求 ...

  9. Burndown chart

    S型的燃尽图 在一次milestone开发过程中,开发者会持续编辑issue列表,每个issue都有自己的生命周期.燃尽图预期这些issues会被线性的消灭掉,所以从第一天直接到最后一天画个直线表示预 ...

  10. Redis学习笔记(一)

    一.Redis入门概述 1.是什么? (1)全称:REmote DIctionary Server(远程字典服务器).是完全开源免费的,用C语言编写的, 遵守BCD协议.是一个高性能的(key/val ...