
1.5 Android应用程序的调试
Android为我们提供了一个强大的调试工具DDMS,通过DDMS可以调试并监控程序的运行。Android除了可以用System.out.println(“…”);语句来打印输出外,还为我们提供了另外一个类android.util.Log来调试程序。下面就为大家一一讲解两种方法的使用。
首先讲解在Java中十分熟悉的System.out.println()方法,进行打印输出,具体步骤如下。
(1)在所创建的HelloAndroid项目中依次打开src文件夹下的com.bn.chap1.ha包中的Sample1_1_Activity.java文件。
(2)在setContentView(R.layout.main)下面添加一句代码System.out.println("first System.out. println");
(3)运行程序,便可以在DDMS中观看到效果。
提示:默认情况下,DDMS的按钮是隐藏的,读者需要通过Open Perstective来添加DDMS。在工具栏中,通常Open Perstective在开发环境的右上角,如图1-13所示

图1-13 Open Perstective和DDMS按钮

图1-14 DEBUG按钮
(4)打开DDMS,找到LogCat面板,选择DEBUG按钮,如图1-14所示。选择Log,可以找到刚刚打印的语句,如图1-15所示。

图1-15 Log面板打印输出
(5)如果读者觉得在Log中有太多信息,也可以在LogCat中添加一个专门输出System.out信息的面板。单击“DEBUG”按钮后面的加号,然后会弹出Log Filter面板,在Filter Name中输入过滤器名称,在by Log Tag中输入过滤的内容,如图1-16所示。

图1-16 过滤器设置
提示:在过滤器内容一项中,程序是用System.out.println()输出的,但有时可能用System.out.print()输出,所以此处笔者设置为System.out。
(6)此时可以再次运行,观看效果,如图1-17所示。

图1-17 System.out输出面板
当然除了熟悉的System.out外,Android还提供了另外一个类android.util.Log进行打印输出。下面介绍Log类的使用,步骤如下。
(1)在刚才的项目中注释掉刚刚添加的System.out.println("first System.out.println"),然后在后面添加代码Log.d("TAG", "first Log")。
(2)运行程序,在DDMS中找到LogCat面板,选择Log页面,观看打印的内容,如图1-18所示。

图1-18 Log输出内容
提示:public static int d(String tag, String msg)方法为打印输出,tag为输出的标签,mag为输出的信息内容。使用该方法还需要导入android.util.Log包。
两种输出各有优缺点,读者可在日后的学习中慢慢体会,根据实际情况选择相应的打印语句。