0 Comments

调试程序(2)

发布于:2012-11-19  |   作者:广州网站建设  |   已聚集:人围观
调试程序(2)

这5个方法的首字母(v、d、i、w、e)分别对应VERBOSE、DEBUG、INFO、WARN、ERROR。这5个方法的区别并不大,只是输出信息的颜色不同。通过使不同的信息输出不同的颜色,可以在"LogCat"视图中更好地查看调试信息。除了这5个方法外,还有一个Log.println方法也可以在"LogCat"视图中输出调试信息,该方法的定义如下:

  1. public static native int println(int priority, String tag, String msg); 广州网站建设

println是一个本地方法。上面介绍的5个输出日志的方法在内部都调用了println方法。println方法的后两个参数与这5个方法的相应参数的含义完全相同,而第一个参数表示要输出信息的优先级,实际上就是VERBOSE、DEBUG、INFO、WARN和ERROR五个级别。分别用Log.VERBOSE、Log.DEBUG、Log.INFO、Log.WARN、Log.ERROR。下面的代码在随机绘制实心圆的例子的"DrawRandomCircle"按钮单击事件中输出这5个级别的调试信息,最后用println方法输出VERBOSE级别的调试信息。广州网站建设


  1. //  分别输出5个级别的调试信息  
  2. Log.v("VERBOSE_randomX", String.valueOf(randomX));  
  3. Log.d("DEBUG_randomY", String.valueOf(randomY));  
  4. Log.i("INFO_randomRadius", String.valueOf(randomRadius));  
  5. Log.w("WARN_randomColor", String.valueOf(randomColor));  
  6. Log.e("ERROR_area", String.valueOf(3.14 * randomRadius * randomRadius));  
  7. //  使用println方法输出VERBOSE级别的调试信息  
  8. Log.println(Log.VERBOSE, "VERBOSE_println", "VERBOSE_println");  

执行上面代码后的输出结果如图2.24所示。广州网站设计

 

(点击查看大图)图2.24  输出各个级别的调试信息
除了在"LogCat"视图中输出调试信息外,还可以通过在程序中设置断点的方式来调试程序。在Eclipse中打开要调试的Java源代码文件,并在要设置断点的位置前面的灰色竖条(如果光标所处的位置正好在当前方法内,则当前方法的垂直区间的灰色竖条会变成蓝色竖条)处双击,或在灰色竖条处右键菜单中选择"Toggle Breakpoint"菜单项来设置断点。在设置完断点后,会看到在灰色竖条处多了一个蓝色的实心圆点,如图2.25所示。如果想取消断点,可以再次双击已设置断点的位置,或在灰色竖条右键菜单中选择"Disable Breakpoint"菜单项。
图2.25  设置断点
启动模拟器后,选择工程右键菜单中的"Run" > "Debug As" > "Android Application"菜单项,在模拟器中运行程序。然后单击第一个按钮,就会进入调试状态,程序会停止在断点处,如图2.26所示。如果已经运行过一遍程序,在Eclipse上方的工具栏的调试按钮中会出现以工程名命名的运行项,如图2.27所示。下次再运行程序时,直接单击该运行项即可。
图2.26  调试界面
图2.27  调试菜单命令
虽然通过断点来跟踪程序是非常直接的,但在默认情况下是无条件跟踪,也就是在任何条件下,程序只要执行到断点处就会中断程序的执行,并进入调试界面。但在很多时候,我们并不希望任何情况都进入中断状态。例如,我们只希望randomX的值在大于150时才进入中断状态。要达到这个目的,就要在断点处右键菜单中选择"Breakpoint Properties"菜单项打开调试属性对话框,在右侧的条件文本框中输入"randomX > 150",如图2.28所示。然后单击"OK"按钮关闭对话框。
图2.28  设置调试属性

这时再单击程序的第一个按钮,如果随机生成的randomX值不大于150,程序仍然会正常运行,并不会进入中断状态。

如果想在调试状态获得某个变量的当前值,可以将鼠标指针放到变量所在的位置,这时会弹出包含当前变量值的信息框,如图2.29所示。

图2.29  显示指定变量的值
本节介绍了调试Android程序的一些常用方法。读者在选择调试方式时可以根据自己的实际情况选择一种或几种调试方式。一般情况下,在try{ … }catch{ … }语句的catch块中可以使用Log.e来输出程序中的错误信息。这样在程序抛出异常时可以很容易在"LogCat"视图中发现。
飞机