1、eclipse 程序调试Eclipse 调试 Java 程序代码创建 Java 项目当 Eclipse 首次启动时进入的是资源透视图,在这个透视图中可以管理项目、文件夹、文件和其它资源,按照 Eclipse 的说法,这些面板叫做视图,一套完整的视图叫做透视图,在资源透视图中,你可以使用左上方的视图(导航视图)导航和创建资源。在 Eclipse 中做事之前,如创建 Java 程序,需创建一个 Java项目,创建 Java 项目的步骤如下:1、在导航视图上点击右键,在弹出的上下文菜单中选择新建项目;2、在新建项目对话框中,Eclipse 提供了项目选项:Java,插件开发等。因此你想要创建一个 J
2、ava 项目,在对话框左边选择Java;3、在对话框右边选择 Java 项目,如果你还安装了其它 Java 插件开发包,在这里也会一起列出来(如 EJB,Servlet 等) ,Eclipse默认安装的 JDT 仅支持标准 Java 应用程序,因此你必须选择 Java项目选项;4、点击下一步进入新建项目向导对话框;5、首先给项目命一个名字,因为是一个简单的“Hello, world”例子,因此这里我输入“Hello” ,点击下一步,设置构建Java 项目的设置选项,对于这个项目你不需要做任何修改即可;6、点击完成;7、Eclipse 此时会提示你这种项目是和 Java 透视图关联的,并询问你是
3、否切换到 Java 透视图,选择是。创建 Java 类当你创建好 Java 项目后就可以开始创建 Java 程序了,尽管不是非得这么做,但这样可以将你的 Java 类组织到包中,这是一次很好的实践,通常使用域名做为包名,这样可以减少名字冲突的可能性,如果你没有注册域名,也可以使用任何方便的,唯一的 hoc 名,我在这里使用 org.eclipseguide,项目名是 hello,因此包的全名就是 org.eclipseguide.hello。按照下列步骤创建 Java 程序:1、在项目上点击右键,选择 New.Class 弹出新建 Java 类向导;2、第一个字段区域“源文件夹”默认是项目的文
4、件夹,保持默认值;3、在包字段区域输入 org.eclipseguide.hello;4、在类名字段区域输入 HelloWorld;5、在“Which Method Stubs Would You Like to Create?”区域下,选中 public static void main(String args),新建 Java类的对话框6、点击完成,新建 java 类向导将会为程序包创建一系列目录,HelloWorld.java 源文件将会放在这个包名下面。自动创建的代码包括一个 main( )方法,你可以向里面添加任何功能,如打印你的 Hello, world!,为了使调试变得更有趣,你
5、需要添加一个循环打印的方法,在 Eclipse 中修改自动生成的代码,如下:public class HelloWorld public static void main(String args) say(“Hello, world!“);public static void say(String msg) for (int i = 0; i 3; i+) System.out.println(msg);运行 Java 程序现在你已经可以运行这个 Java 程序了,在运行 Java 程序时需要考虑多个事情,包括 Java 运行环境,是否需要命令行参数,如果不知一个类有 main( )函数究竟该
6、使用哪一个,在 Eclipse 中正确启动一个 Java 程序的方法是从 Eclipse 菜单中选择“运行 运行” ,此时会弹出一个对话框,让你配置启动选项,在运行一个 Java 程序前,你需要创建一个启动配置或从现有配置中选择一个。对于大多数简单的 Java 程序而言,你不需要指定启动配置,因此你可以使用更简单的方法启动程序,首先确保编辑器中HelloWorld 源代码是全部选中的,然后:1、从 Eclipse 菜单中选择运行 以.运行Java 应用程序;2、因为你已经对 Java 程序做出了修改,Eclipse 会提示你在运行 Java 程序前先保存一下,点击确定;3、任务视图切换到控制台
7、视图,显示程序输出你可能疑惑为什么没有单独的步骤将.java 文件编译成.class 文件,这是因为 Eclipse JDT 包含了一个增量的编译器来评估你输入的 Java 程序代码,它可以高亮显示语法错误和不完整的引用,和其它 Eclipse 友好的特性一样,如果你觉得这个功能对你没用,你完全可以关闭它,如果编译成功,.class 文件会在保存源文件时同步保存。调试 Java 程序在 Eclipse 中交互式运行代码是其最强大的特性之一,使用JDT 调试器,你可以逐行执行你的 Java 程序,检查程序不同位置变量的值,这个过程在定位代码中的问题时非常有用。为了准备调试,你需要在代码中设置一个
8、断点先,以便让调试器暂停执行允许你调试,否则,程序会从头执行到尾,你就没有机会调试了。为了设置一个断点,在编辑器左边灰色边缘双击,这里将 say()函数位置设置为断点,此时将会显示一个蓝色的小点,表示一个活动的断点。在调试器下运行程序和运行它非常类似,Eclipse 提供了两个选项:选择“使用全方位服务运行 调试”菜单使用一个快捷配置,如果默认选项正确,也可以选择“运行 以.调试Java 应用程序” 。在这里我们使用后者。确保编辑器中的 HelloWorld 代码被全部选中了,然后从主菜单中选择“运行 以.调试Java 应用程序” ,Eclipse 将会启动程序,切换到调试透视图,在断点暂停执
9、行调试透视图包括多个新的视图,都是用于调试使用的,首先,在左上方是调试视图(不要和调试透视图混淆了) ,它显示了所有调用堆和当前所有线程的状态,包括所有已经执行完毕的线程,程序运行到断点位置时,状态显示为暂停。单步调试代码调试视图的标题栏是一个让你可以控制 Java 程序执行的工具栏,前面几个按钮和电子设备,如 CD 播放器的控制按钮风格非常类似,允许你暂停、继续和终止程序,这些按钮让你可以一行一步地执行程序代码,鼠标移动到每个按钮上时都会显示按钮提示信息,如跟踪,单步,返回等。如第二个按钮跟踪,当前执行的程序代码在编辑器中处于高亮状态:调用 say()函数。如果跟踪的话就会进入这个函数内部,
10、点击跟踪后,高亮的行是首先执行的行 for 语句。一般情况下,你只想跟踪你自己写的类,对于标准类和第三方类通常没有什么问题,是不需要跟踪的,这时候可以使用过滤后跟踪功能,即 Step With Filters,选择Window.Preferences.Java.Debug.Step 过滤器,然后选择列出的包和类,多花点时间设置过滤器可以有效减轻调试难度,当你使用普通的跟踪调试功能时经常会遇到许多未知错误,这时使用过滤跟踪就能很好解决这一问题。评估变量和表达式调试视图的右边是一个标签视窗包含视图,在这里你可以检查和修改变量和断点,选择变量标签页,这个视图显示了当前范围的变量及其值,在进入 for
11、 循环之前,这个视图仅包括 say()函数的msg 参数及其值,单机单步或跟踪按钮进入 for 循环,变量视图将会显示循环标志 i 及其值 0。有时一个 Java 程序有许多变量,但你仅对其中一个或几个感兴趣,为了监视选择的变量和表达式,你可以将它们添加到表达式视图中的监视列表中,例如,选择一个变量 i(在编辑器中双击它) ,点击右键,从弹出的右键菜单中选择监视,这个变量(及其值)就会显示在表达式视图中。监视变量的一个好处是你可以检查对象和它们的值的详细信息,并且可以修改它们的值。返回到变量视图,展开 msg 变量显示它的属性,它是一个 char 数组,展开 msg 字符串可以显示它的值,例如
12、,双击 H,会提示你输入一个新值,如 J。在同一个标签视窗中的是显示视图,它允许你输入任何允许的变量或包括这些变量的实例表达式,选择显示视图然后输入:msg.charAt(i)为了快速评估这个表达式,你必须先选中它,然后点击第二个显示视图工具按钮(显示所选文本评估结果) ,它在显示视图中显示结果,通常最好点击第一个工具按钮(检查所选文本评估结果) ,因为它添加表达式到表达式视图中,不管使用哪种方法,当表达式中的变量发生变化时,显示的值都不回自动更新。但在表达式视图中,你可以讲表达式转为监视表达式,当你单步调试代码时就会自动更新,切换到表达式视图,注意检查按钮显示下一个表达式,点击表达式然后从弹
13、出的上下文菜单中选择转换成监视表达式,下一个表达式图标将会变成监视图标。我们还是回到单步调试代码中,你前面在调用System.out.println()时留下了游标,如果你想查看System.out.println()的代码,你可以点击跟踪,否则就点击单步执行 System.out.println()函数,开始下一个 for 循环。在编辑器下方是连一个标签视窗,包括控制台视图,程序输出就显示在这里,如果你象前面说的那样将 H 改为 J 了,那这里将会显示 Jello, world!。你也可以点击单步执行,直到循环终止,如果你觉得这个过程太过冗长,也可以点击返回快速结束 say()函数返回到 main()函数,或者点击继续按钮让 Java 程序运行到终点。小结Eclipse 最有用的特性之一就是它集成的调试器,它可以交互式执行代码,通过设置断点,逐行执行代码,检查变量和表达式的值等功能反应其强大的功能,它是一款检查和修复 Java 程序代码问题的不可替代的工具。