记录与侦错可以分成 " 在程序中加上除错讯息 " ,与 " 在侦错环境中查看除错讯息 " 两部分。
在程序中加上除错讯息:
程序几乎行行都可以出错。要看程序中的哪一部分可能会出错,实在是门很深的学问。除了程序代码语法格式上的问题,绝大部分会造成大麻烦的,是隐藏在程序逻辑中的问题。这些问题只有在模拟器甚至在实际机器上运行时才会出现。为了解决这些问题,我们需要一些协助工具。在 Android 平台上,我们可以透过 "Log" 函数,来达到自行在程序代码中加入一个个自订的 " 记录点 " 或 " 检查点 " 。并可以透过开发环境中的 "LogCat" 工具来查看记录。当程序流程每次运作到 " 记录点 " 时,相应的 " 记录点 " 就会在开发工具记录中输出一笔侦错用的讯息。开发者透过这份记录,来检查程序执行的过程、使用到的参数,是否与我们期望的结果符合。并依此来辨别程序代码中可能出错的区域,好能对症根治造成问题的程序代码。
导入 Log 函数:
打开 "Bmi.java" 文件,我们在程序中加入一些除错讯息。一段含有记录点 (Log) 的程序代码片段如下
import android.util.Log
....
public class Bmi extends Activity {
private static final String TAG = "Bmi";
....
Log.d(TAG, "find Views");
Log.d(TAG, "set Listensers");
....
分析:
就像许多人在学生时代 k 书时,会在课本上使用不同颜色作记号。用不同颜色的色笔,来代表各段课文不同的重要性或是意义。 "Log" 函数的作用,就像是色笔一样,协助我们在程序代码中 " 作记号 " ,这些数位记号,会在稍后就介绍到的 "LogCat" 工具中显示。
Log 的使用格式如下:
Log. 代号 ( 标签 , 讯息 );
代号:依据讯息的类型,我们有五种 Log 讯息形式可以用作记录。
1. Log.v (VERBOSE) 详细讯息
2. Log.d (DEBUG) 除错讯息
3. Log.i (INFO) 通知讯息
4. Log.w (WARN) 警告讯息
5. Log.e (ERROR) 错误讯息
一般较常用的是 Log.d( 除错讯息 ) 、 Log.w ( 警告讯息 ) ,和 Log.e ( 错误讯息 ) 。范例中多使用 Log.d( 除错讯息 ) 。
private static final String TAG = "Bmi";
....
Log.d(TAG, "find Views");
Log.(v,d,i,w,e) 的第一个参数,是一个自定的记录标签。在目前的 BMI 应用程序范例中,我们还看不太出来自定记录标签的意义。但是当程序的功能一扩张的时候(例如像在AppDemos 范例那样,包含各种不同功能),我们可以为不同的功能,给予不同的纪录标签。
在 Log.(v,d,i,w,e) 的第二个参数中,加入我们想要记录的资讯。
实际应用:
在 BMI 应用程序中,我们可以在用来处理输入错误的 "try...catch" 语句中加入 "Log" 讯息,好让我们得以从记录资料中,追踪到输入错误的情况。
public class Bmi extends Activity {
private static final String TAG = "Bmi";
....
catch(Exception err){
Log.e(TAG, "error: " + err.toString());
Toast.makeText(Bmi.this, getString(R.string.input_error),
Toast.LENGTH_SHORT).show();
}
}
延伸运用:
在实作错误讯息提示前,我们其实可以使用 Log.e 函数,来先将错误讯息记录起来,等到整个程序大致完成了,再来用 Toast 或 AlertDialog 元件,来实作输入错误提示的功能 。
在侦错环境中查看除错讯息:
在程序中加上除错讯息后,我们可以使用除错模式 (Debug Mode) 运行模拟器,并透过开发工具来查看除错讯息。切换到 "Debug" 环境配置,可以看到右下角 的 "LogCat" 视窗。其上有五个醒目的V 、D 、I 、W 、E 图示,分别代表着五种 Log 形式 (Verbose, Debug, Info, Warn, Error) ,还有一个绿色的 "+" 号,与一个红色的 "-" 号。模拟器运行时会产生很多的讯息记录 (Log) ,一不注意就看到眼花了。这时候,我们自订的记录标签(范例中自订的标签是 "Bmi" )就派上了用场,正好可以为 LogCat 加上一个过滤器 (Log Filter) ,只显示与 "Bmi" 标签相关的讯息记录。
加入讯息记录过滤器 (Log Filter):
在 "LogCat" 视窗右侧,按下绿色的 "+" 号,会弹出一个 "Log Filter" 视窗。在 "Log Filter"视窗的 "by Log Tag" 栏位中填入 "Bmi" ,并填入任意的 "Filter Name" 后,按下 "ok" 按钮。"LogCat" 视窗上会多出一个与我们填入的 "Filter Name" 相同的标签。里面的内容,即所有标示为 "Bmi" 的自订讯息记录。