2.4 程序调试
读者在将来的程序开发过程中会不断地体会到程序调试的重要性。为验证Java单元的运行状况,以往程序开发人员会在某个方法调用的开始和结束位置处分别使用System.out.println()方法输出状态信息,并根据这些信息判断程序执行状况,但这种方法比较原始,而且经常导致程序代码混乱(导出的都是System.out.println()方法)。
本节将简单介绍如何在IDEA和Eclipse中执行设置程序的断点、实现程序的单步执行、在调试过程中查看变量和表达式的值等操作,这样可以避免在程序中编写大量的System.out.println()方法输出调试信息。
1.断点
设置断点是程序调试中必不可少的手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行。
可以在IDEA中所显示的代码行号的右边单击添加或删除当前行的断点,如图2.71所示。
可以在Eclipse中所显示的代码行号的位置处双击添加或删除当前行的断点,或者在当前行号的位置处右击,在弹出的快捷菜单中选择Toggle Breakpoint命令实现断点的添加与删除,如图2.72所示。
图2.71 在IDEA中设置断点
图2.72 在Eclipse中设置断点
2.以调试方式运行Java程序
要在IDEA中以调试方式运行Main.java,可以在Main.java的工作区内右击,在弹出的快捷菜单中选择Debug 'Main.main()'命令。调试器将在该断点处挂起当前线程,使程序暂停,如图2.73所示。
图2.73 在IDEA中以调试方式运行Main.java
要在Eclipse中调试HelloJava程序,可以右击HelloJava.java文件,在弹出的快捷菜单中选择Debug As→1 Java Application命令。如图2.74所示,在第7行代码处设置了断点,调试器将在该断点处挂起当前线程,使程序暂停。
图2.74 程序执行到断点后暂停
3.程序调试
程序执行到断点处被暂停后,可以通过“调试”视图工具栏上的按钮执行相应的调试操作,如运行、停止等。
下面对“调试”视图中的两个关键操作进行简要介绍。
单步跳过。
在如图2.75所示的IDEA的“调试”视图的工具栏中单击按钮或按F8键,将执行单步跳过操作,即运行单独的一行程序代码,但是不进入调用方法的内部,然后跳到下一个可执行点并暂挂线程。
图2.75 IDEA的“调试”视图
在如图2.76所示的Eclipse的“调试”视图的工具栏中单击按钮或按F6键,将执行单步跳过操作,即运行单独的一行程序代码,但是不进入调用方法的内部,然后跳到下一个可执行点并暂挂线程。
图2.76 “调试”视图
说明
不停地执行单步跳过操作,会每次执行一行程序代码,直到程序结束或等待用户操作。
单步跳入。
在如图2.75所示的IDEA的“调试”视图的工具栏中单击按钮或按F7键,将跳入调用方法或对象的内部,单步执行程序并暂挂线程。
在如图2.76所示的Eclipse的“调试”视图的工具栏中单击按钮或按F5键,将跳入调用方法或对象的内部,单步执行程序并暂挂线程。