程序调试

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

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

断点

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

可以在 IDEA 中所显示的代码行号的右边单击添加或删除当前行的断点,如图2.71 所示。

可以在 Eclipse 中所显示的代码行号的位置处双击添加或删除当前行的断点,或者在当前行号的位置处右击,在弹出的快捷菜单中选择 Toggle Breakpoint 命令实现断点的添加与删除,如图2.72 所示。

image 2023 12 12 11 43 39 008
Figure 1. 图2.71 在IDEA中设置断点
image 2023 12 12 11 43 59 736
Figure 2. 图2.72 在Eclipse中设置断点

以调试方式运行Java程序

要在 IDEA 中以调试方式运行 Main.java,可以在 Main.java 的工作区内右击,在弹出的快捷菜单中选择 Debug 'Main.main()' 命令。调试器将在该断点处挂起当前线程,使程序暂停,如图2.73 所示。

image 2023 12 12 11 44 45 885
Figure 3. 图2.73 在IDEA中以调试方式运行Main.java

要在 Eclipse 中调试 HelloJava 程序,可以右击 HelloJava.java 文件,在弹出的快捷菜单中选择 Debug As→Java Application 命令。如图2.74 所示,在第 7 行代码处设置了断点,调试器将在该断点处挂起当前线程,使程序暂停。

image 2023 12 12 11 45 32 133
Figure 4. 图2.74 程序执行到断点后暂停

程序调试

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

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

单步跳过。

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

image 2023 12 12 11 52 31 582
Figure 5. 图2.75 IDEA的“调试”视图

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

image 2023 12 12 11 54 41 707
Figure 6. 图2.76 “调试”视图

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

单步跳入。

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

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