Java任务:购物平台主目录的调试

来自CloudWiki
跳转至: 导航搜索

任务描述

  • 在软件开发过程中,程序调试时检查代码并验证其正常运行的有效方法。通过网络购书系统的主目录模块的调试过程来说明如何使用Eclipse调试应用程序如图2-21、2-22所示。
  • Java2-9.png
  • Java2-10.png

源代码

import java.text.MessageFormat;
import java.util.Scanner;

public class MainClass {
	public static void main(String[] args) {
		// * 获取用户的输入数据
		Scanner scanner = new Scanner(System.in);
		while(true) {
			// 编写主菜单输出语句
			System.out.println("**********商品管理系统**********\r\n" 
					+ "1.查询所有商品\r\n" 
					+ "2.根据商品编号查找图书\r\n" 
					+ "3.购买图书\r\n" 
					+ "4.取消购买\r\n" 
					+ "5.查询购买情况\r\n" 
					+ "6.退出系统\r\n" 
					+ "*******************************");
			System.out.println("请选择(1-6):");
			//获取用户对于菜单的选择
			String value = scanner.next();
			int choise = Integer.valueOf(value);
			switch(choise) {
			case 1:	//处理查询所有书籍的业务
				System.out.println(MessageFormat.format("您选择了{0}", "处理查询所有书籍的业务"));
				break;
			case 2:	//处理按书籍编号查询
				System.out.println(MessageFormat.format("您选择了{0}", "处理按书籍编号查询"));
				break;
			case 3:	//购买书籍,将书籍加入到用户的购物车中
				System.out.println(MessageFormat.format("您选择了{0}", "购买书籍"));
				break;
			case 4:	//删除书籍,从购物车中删除书籍信息
				System.out.println(MessageFormat.format("您选择了{0}", "删除书籍"));
				break;
			case 5:	//显示某个用户购物车中所有的书籍
				System.out.println(MessageFormat.format("您选择了{0}", "显示用户购物车中的书籍"));
				break;
			case 6:	//退出当前应用程序
				System.out.println(MessageFormat.format("您选择了{0}", "退出当前应用程序"));
				scanner.close();
				System.exit(0);
				break;
			default:
				System.out.println("您的选择不正确");
			}
		}
	}
}

任务实现

  • 第一步:启动Eclipse,打开控制台项目Project0204,在编辑器对应代码行的左侧栏中双击设置断点,如图2-23所示。

Java2-41.png

图2-23 设置断点

  • 第二步:选择“Run——Debug”命令,如图2-24所示。Eclipse会提示改变透视图的对话框,如图2-25所示,单击“Yes”,进入Debug透视图。程序执行到第一个断点处暂停,如图2-26所示。

Java2-42.png

  • 图2-24 开始调试

Java2-43.png

  • 图2-25 确认透视图改变

Java2-44.png

  • 图2-26 开始调试
  • 第三步:根据具体的要求分别按“Resume(F8)”、“Step Into(F5)”、“Stop Over(F6)”进行执行相应的语句。

Java2-45.png

  • 图2-27 调试命令
  • 第四步:重复第三步,直到找出所有错误并修正。完成整个模块的调试。

调试的定义

  • 在软件开发周期中,测试和修正缺陷的时间远远多于写代码的时间。通常,调试是指发现缺陷并改正的过程。修正缺陷紧随调试之后,或者说二者是相关的。如果代码中存在缺陷,首先要查找造成缺陷的根本原因,这个过程称为调试(Debugging)。找到根本原因后,就可以修正缺陷。
  • 在软件开发过程中,程序调试是检查代码并验证它能正常运行的有效方法。程序调试就像组装完一辆汽车后对其进行测试,检查一下汽车各个部件能够正常工作。如果发生异常,要求其进行修正。那么如何调试代码呢?Eclipse提供了很多用于调试的工具,极大的提高了程序调试的效率。

设置断点

  • 断点是一个信号,它通知调试器在某个特定点上暂时将程序执行挂起。当程序执行在某个断点处挂起时,程序处于中断模式。进入中断模式并不会终止或结束程序的执行,执行可以在任何时候继续。断点提供了一种强大的工具,能够在需要的时间和位置挂起执行。
  • 在Eclipse中,可以采用以下方法插入断点:

(1)在需要设置断点的代码行左侧栏处双击,如图2-23所示。 (2)选中要设置断点的代码行,选择“Run——Toggle Breakpoint”命令,如图2-28所示。

Java2-46.png

  • 图2-28 菜单插入断点

(3)在需要设置断点的代码行左侧栏处单击右键,在弹出的快捷菜单中选择“Toggle Breakpoint”命令,如图2-29所示。

Java2-47.png

  • 图2-29 右键插入断点
  • 如果要删除设置的断点,可以在具有断点的代码行按照设置断点的方法再次执行一遍,就可以删除已经设置的断点。

使用断点进行调试

  • 如果已经在想要暂停执行的地方设置了断点,选择“Run——Debug”命令(或按F11)启动调试。当程序执行到断点处,自动暂停执行。

命中断点后,加断点的行高亮显示,编辑器左侧有箭头指向该行代码,意指下一步将执行此行。在中断模式下,有多条可使用的命令,可使用相应命令进行进一步的调试,如图2-27。

  • (1)继续(Resume)
  • 它像是重新执行程序。它会继续程序的执行直到遇到下一个断点(如果有),或者下一个接收用户输入语句(如果有),或者程序末尾。它的快捷键是F8。
  • (2)逐过程(Step Over)
  • 调试器执行到断点后,可能需要一条一条地执行代码。逐过程命令用于一条一条地执行代码,快捷键为F6。这将执行当前高亮的行,然后暂停。如果在一条方法调用语句高亮时按F6,执行会停在调用语句的下一条语句上,如图2-30所示。

Java2-48.png

  • 图2-30 逐过程(Step Over (F6))
  • (3)逐语句(Step Into)
  • 逐语句与逐过程有点相似,其快捷键为F5。唯一的不同是,如果当前高亮语句是方法调用,调试器会进入方法内部,如图2-31所示。

Java2-49.png

  • 图2-31 逐语句(Step Into (F5))
  • (4)跳出(Step Return)
  • 当在一个方法内部调试时会用到它。如果在当前方法内按F7快捷键,调试器会完成此方法的执行,之后在调用此方法的语句的下一条语句处暂停。

查看变量的值

  • 数据便签是应用程序调试期间用于查看对象和变量的一种高级便签消息。当调试器执行到断点时,将鼠标移到对象或者变量上方时,会看到它们的当前值。如图2-32所示。

Java2-50.png

  • 图2-32 调试时的数据便签
  • 当设置好断点,进行代码调试的时候,还可以通过Debug透视图中的Variable选项卡查看相关的变量的取值,如图2-33所示。

Java2-51.png

  • 图2-32 变量窗口

拓展与提高

  • 借助网络或其他资源,深入学习利用Eclipse进行程序调试的技巧,提高发现程序中缺陷和错误的能力。

返回 Java程序设计