2.3 程序调试

读者在将来的程序开发过程中会不断体会到程序调试的重要性。为验证Java单元的运行状况,以往会在某个方法调用的开始和结束位置分别使用System.out.println()方法输出状态信息,并根据这些信息判断程序执行状况,但这种方法比较原始,而且经常导致程序代码混乱(导出的都是System.out.println()方法)。

本节将简单介绍Eclipse内置的Java调试器的使用方法,使用该调试器可以进行设置程序的断点、实现程序单步执行、在调试过程中查看变量和表达式的值等调试操作,这样可以避免在程序中编写大量的System.out.println()方法输出调试信息。

使用Eclipse的Java调试器需要设置程序断点,然后使用单步调试分别执行程序代码的每一行。

1.断点

设置断点是程序调试中必不可少的手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行。

可以在Java编辑器中显示代码行号的位置双击添加或删除当前行的断点,或者在当前行号的位置右击,在弹出的快捷菜单中选择“切换断点”命令实现断点的添加与删除,如图2.27所示。

图2.27 Java编辑器中的断点

2.以调试方式运行Java程序

要在Eclipse中调试HelloJava程序,可以在“包资源管理器”视图中的HelloJava文件处右击,在弹出的快捷菜单中选择“调试方式”/“Java应用程序”命令。图2.27中在第8行代码处设置了断点,调试器将在该断点处挂起当前线程,使程序暂停,如图2.28所示。

3.程序调试

程序执行到断点被暂停后,可以通过“调试”视图工具栏上的按钮执行相应的调试操作,如运行、停止等。“调试”视图如图2.29所示。

下面对“调试”视图中的两个关键操作进行简要介绍:

 单步跳过。在“调试”视图的工具栏中单击按钮或按F6键,将执行单步跳过操作,即运行单独的一行程序代码,但是不进入调用方法的内部,然后跳到下一个可执行点并暂挂线程。

图2.28 程序执行到断点后暂停

图2.29 “调试”视图

说明

不停地执行单步跳过操作,会每次执行一行程序代码,直到程序结束或等待用户操作。

 单步跳入。在“调试”视图的工具栏中单击按钮或按F5键,将跳入调用方法或对象的内部,单步执行程序并暂挂线程。