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

所以在学习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类的具体使用方法:

 1 package wt.relativeLayout;
 2
 5 import android.app.Activity;
 6
 7 import android.os.Bundle;
 8
 9 import android.util.Log;
10
11 import android.widget.Button;
12
13 import android.widget.EditText;
14
15 import android.widget.TextView;
16
20
21 public class RelativeLayout extends Activity {
22
23 final static String TAG = "LOGCAT";
24
25 private TextView tv = null;
26
27 private EditText et = null;
28
29 private Button btn1 = null;
30
31 private Button btn2 = null;
32
33     @Override
34
35     public void onCreate(Bundle savedInstanceState) {
36
37         super.onCreate(savedInstanceState);
38
39         setContentView(R.layout.main);
40
41         tv = (TextView)findViewById(R.id.label);
42
43         et = (EditText)findViewById(R.id.entry);
44
45         btn1 = (Button)findViewById(R.id.cancel);
46
47         btn2 = (Button)findViewById(R.id.ok);
48
49         tv.setText(R.string.name);
50
51         btn1.setText(R.string.button1);
52
53         btn2.setText(R.string.button2);
54
55
56
57         Log.v(TAG, "This is Verbose");
58
59         Log.d(TAG, "This is Debug");
60
61         Log.i(TAG, "This is Info");
62
63         Log.w(TAG, "This is Warn");
64
65         Log.e(TAG, "This is Error");
66
67     }
68
69 }

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

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

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

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

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

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

转载于:https://www.cnblogs.com/benchao/p/5448359.html

57. Android之程序调试LogCat (转)相关推荐

  1. Android eclipse 程序调试

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

  2. android studio 设备调试及Logcat查看

    文章转载自:http://www.cnblogs.com/apaojun/p/4283944.html 现在android的开发工具基本上都改用android studio而慢慢弃用eclipse了, ...

  3. 逮虾户!Android程序调试竟简单如斯

    逮虾户!Android程序调试竟简单如斯 PS:行吧,不用百度了,逮虾户是<头文字D>的一首配乐<Deja vu>,中文谐音 "逮虾户",飙车漂移专用BGM ...

  4. Android程序调试方法介绍

    静态调试 适用于:通过打印变量的值来查看某一时刻值是否正确 Toast(Snackbar)打印法 一般的Android开发人员最爱的调试法,使用简便,仅需一行代码,轻松打印: Toast.makeTe ...

  5. Eclipse+CDT+GDB调试android NDK程序

    http://www.cnblogs.com/shadox/archive/2011/12/02/2272564.html Eclipse+CDT+GDB调试android NDK程序 Eclipse ...

  6. Android应用程序的调试

    adb   devices 这条命令用于列出当前adb服务器所能检测到的所有模拟器和手机.这也是快速获取模拟器或者手机TCP/IP通信端口的一个方法.如果当前系统中只连接了一个模拟器或手机,那么其他所 ...

  7. vs2015 linux jni,使用Visual C++ 跨平台移动技术调试JNI Android 应用程序

    使用Visual C++ 跨平台移动技术调试JNI Android 应用程序 02/05/2015 6 分钟可看完 本文内容 [原文发表时间] 2014/12/12  4:22PM 之前我们已经介绍了 ...

  8. 杀死应用进程 android,如何杀死Android应用程序启动的logcat进程?

    我有 Android应用程序,在Service启动实现后面跟着代码: ... Process process = Runtime.getRuntime().exec("logcat -v t ...

  9. 使用 JDB 调试 Android 应用程序

    http://www.tinylab.org/use-jdb-to-debug-android-application/ 目录 [隐藏] 1 前言 2 JDWP 协议介绍 3 JDB 的使用方式 4  ...

最新文章

  1. R语言dplyr包pull函数抽取dataframe数据列实战
  2. HABBY CEO王嗣恩:这个下载量近20亿的爆款,曾被我推翻重做两次
  3. 必须使用列别名命名此表达式_lambda表达式
  4. mysql必知必会 create_mysql必知必会--检 索 数 据
  5. json 插入数据_Power BI数据回写SQL Server(2)——存储过程一步到位
  6. dom4j工具类_基于DOM4J的XML文件解析类
  7. SpringCloud工作笔记046---SpringCloud https证书申请_不同证书区别
  8. Uber “杀人”事件
  9. List特有迭代器--ListIterator的特殊功能
  10. aqua data studio 连接db2
  11. 基于Python的简单数据挖掘
  12. java实现url编码与中文的互相转换
  13. 计算机与打印机脱机后怎么共享,电脑重启后共享打印机脱机的解决方法
  14. 国民岳父的“屁民理论”
  15. 普陀寺里的穿白T恤的奥特曼 2012年9月8日
  16. Android自定义View_绘制菱形图片
  17. pointnet语义分割_训练并预测自己的数据
  18. Eureka Server的REST端点
  19. 实验3-5 查询水果价格
  20. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛) 题解

热门文章

  1. 最近开机老是弹出网银插件的问题
  2. 编程的智慧 意外在内网找到的资源
  3. Sql Server 连接池及其用法
  4. 基于JDK7 NIO2的高性能web服务器实践之二(转)
  5. 18 | 案例篇:内存泄漏了,我该如何定位和处理?
  6. java定义一个学生类cstudent_编写一个JAVA程序片断 定义一个表示学生的类student
  7. axis2 java.net.url_axis,axis2调用.net的webservice
  8. java请模拟出双重定时器_Java多线程基础 - osc_czmaebyq的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. vs如何写多线程_VS + PS + GS
  10. android onpreviewframe保存mp4_无需第三方工具!教你如何保存抖音完整版视频