05 Eclipse 中的Java 程序调试.docx

上传人:b****5 文档编号:6695361 上传时间:2023-01-09 格式:DOCX 页数:15 大小:1.89MB
下载 相关 举报
05 Eclipse 中的Java 程序调试.docx_第1页
第1页 / 共15页
05 Eclipse 中的Java 程序调试.docx_第2页
第2页 / 共15页
05 Eclipse 中的Java 程序调试.docx_第3页
第3页 / 共15页
05 Eclipse 中的Java 程序调试.docx_第4页
第4页 / 共15页
05 Eclipse 中的Java 程序调试.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

05 Eclipse 中的Java 程序调试.docx

《05 Eclipse 中的Java 程序调试.docx》由会员分享,可在线阅读,更多相关《05 Eclipse 中的Java 程序调试.docx(15页珍藏版)》请在冰豆网上搜索。

05 Eclipse 中的Java 程序调试.docx

05Eclipse中的Java程序调试

5Eclipse中的Java程序调试

Eclipse平台内置了一个Java调试器。

该调试器不仅提供诸如单步执行、设置断点、检查变量以及暂时挂起和恢复线程等标准调试功能,而且提供了代码片段编辑测试窗页面和远程调试两个特殊的功能。

Eclipse调试器是Eclipse二进制文件中包含的标准插件。

Eclipse有一个特殊的调试视图,使得开发人员能够管理工作台中程序的调试和运行。

Eclipse平台虽然主要是一个Java开发环境,但其体系结构也支持其他编程语言,例如同一个Eclipse的调试视图也适用于C/C++语言。

5.1调试视图简介通过调试视图,可以管理和控制工作台中程序的运行或调试。

通过设置断点、挂起线程、单步执行以及检查变量来控制程序的运行。

调试视图显示以下信息。

(1)被挂起的正在进行调试的线程的堆栈帧信息,所谓堆栈帧是程序运行时调用的方法以及它内部变量等信息。

(2)程序中每个线程都作为一个节点。

(3)正在运行的程序的进程。

调试视图包括进程视图和控制台视图。

进程视图显示正在运行以及最近被终止的进程,控制台视图允许开发者通过标准输入和输出流对正在运行的进程进行交互操作。

(1)进行Java程序的调试时,可以设置程序所需的运行环境。

如果对运行环境没有特殊要求,可以在快捷方式栏选择【调试为→Java应用程序】(或在主菜单,选择【运行→运行方式→Java应用程序】),弹出如图5-1所示的窗口。

(2)如果要定制程序调试的参数,可以选择【调试为→Java应用程序】,在弹出的如图-2所示的窗口对参数进行设置。

(3)在设置窗口设定好调试参数后,点击【调试】,就会显示如图5-3所示的调试视图。

5.2.1本地调试Java调试器采用了C/S结构,这使得它既可以调试本地运行的程序,也可以进行远程调试(调试网络上其他电脑的Java程序)。

本地调试是最常用的一类调试。

代码编写和编译完成以后,就可以通过工作台的主菜单栏上的【运行→调试】来启动程序。

按照这种方式启动程序,就能够在Java程序和调试器之间建立连接,以便使用断点、单步控制以及表达式求值来调试程序。

建议在调试时尽量做到每行只有一条语句。

因为如果一行有多条语句,部分调试器的功能无法使用,例如,如果同一行有多条语句,就无法设置断点或单步跳过,把源代码加入JAR文件。

1.挂起和恢复线程调试开始后,开发人员可以将正在执行的线程挂起,以便查看该线程堆栈帧的信息,步骤如下。

(1)在调试视图选择线程。

(2)在调试视图的工具栏选择“挂起”按钮,线程将被挂起。

调试视图显示该线程当前的调用堆栈(如图5-4所示),并且调试视图中的编辑器也会突出显示该堆栈帧对应的代码,这行代码就是线程被挂起那一刻程序运行到的地方。

线程挂起时会自动选择线程顶部的堆栈帧(即最近被调用的方法),变量视图将会显示堆栈帧中的变量以及它的值,复杂的变量可以被展开以便查看其成员的值。

开发者也可以在调试视图的调用堆栈里选择一个方法调用,该方法的变量信息就会在变量视图显示出来,如图5-5所示。

线程既可以被挂起,也可以恢复执行。

(1)在调试视图选择线程或它的堆栈帧。

(2)在调试视图的工具栏里点击“继续”按钮(或按F8),线程恢复执行。

此时,调试视图不再显示它的堆栈帧,变量视图也会清除与其相关的信息,如图5-6所示。

2.单步执行程序

线程被挂起后,可以使用“单步控制”逐行执行程序。

如果在这个过程中遇到断点(下一小节将详细讲述),那么将在断点处挂起并且终止单步执行。

单步执行程序时有以下几种操作。

(1)“单步跳过”。

不进入调用的方法内部,而是在该方法结束后,下一个方法执行前挂起。

这个功能可以通过调试视图工具栏的“跳过”按钮或F6功能键来实现。

(2)“单步进入”。

将会进入调用方法的内部。

这个功能可以通过调试视图工具栏的“进入”按钮或F5功能键来实现。

(3)“单步跳入选择的内容”。

能使程序运行直至已选择的方法被调用。

在Java编辑器里,将光标覆盖希望进入的方法的名字,点击【运行】菜单(或Java编辑器上下文菜单)里的【单步跳入选择的内容】按钮启用该功能。

这个功能还可以通过Ctrl+F5实现。

(4)“单步执行过滤器”。

避免在调试过程中出现中断的情况。

这种中断是由于在没有源代码的情况下使用单步执行进入调用方法代码而导致的。

中断发生时,会弹出一个窗口,要求输入源代码的位置。

在使用只包含类文件的代码库时会发生这种情况。

在过滤器中设置的任何包和类在单步进入只有二进制文件的类库时,调试器都不会弹出要求输入源代码位置的窗口。

调试器也不会进入单步进入过滤器里的包和类。

要设置单步执行过滤器,选择主菜单里【窗口→首选项】,在弹出的窗口选择【Java→调试→单步执行过滤】,如图5-7所示。

在右边的窗口中可以添加类、包以及过滤器,还可以启用或是禁用过滤器(在调试视图里,单击右键在弹出的菜单里也可以关闭或打开过滤器)。

(5)如果已经进入了方法调用,并且看到了期望的结果,是希望尽快从该方法返回,就可以使用“单步返回”。

这个功能通过功能键F7实现。

(6)一个线程被挂起后,可以让它恢复执行一直到某一行,这样可以让程序运行到某一行而不需要设置断点。

选择希望运行到的那一行,然后使用快捷键Ctrl+R。

-

3.表达式的计算和显示

当JVM挂起一个线程(由于遇到断点或单步执行),就可以在堆栈帧的上下文中计算表达式。

缺省情况下,表达式视图位于调试透视图的右上角,它与断点视图、变量视图等视图共享一个窗格。

表达式视图的使用如下。

(1)选择要在其中求值的堆栈帧。

对于变量和表达式视图而言,求值的上下文将由被选择的变量决定。

如果没有选择任何变量,求值的上下文就是堆栈帧。

(2)可以在以下区域输入表达式和对表达式求值:

显示视图、表达式视图的详细信息窗格、变量视图的详细信息窗格以及Java编辑器。

(3)选择被求值的表达式,单击右键并在弹出的菜单选择【显示】、【查看】或【执行】。

【显示】和【查看】的结果将显示在弹出的窗口里,如图5-8所示。

【执行】不会显示结果,它仅仅是运行表达式。

(4)通过按Esc键或点击弹出窗口以外的区域,可以关闭这个弹出窗口。

如果选择【显示】,结果将在显示视图里显示。

4.查看和修改变量的值

除了前面介绍的几种调试方法,还可以检查变量以确定其值是否正确。

有几种方法可以用来检查程序中的变量。

对于简单的变量,只需要在Java编辑器中将鼠标移到变量上(不需单击)即可,这样会自动打开一个文框并显示该变量的信息,包括它当前的值,如图5-9所示。

如果要查看复杂变量的值,可以使用变量视图。

变量视图显示当前范围内(即堆栈帧的上下文)的所有变量。

缺省情况下,变量视图位于窗口的右上角,它与表达式视图和断点视图共享一个窗格,如图5-11所示。

使用变量视图还可以修改变量的值,选择某个变量,单击右键并在弹出的菜单选择【更改值】。

对于复杂的变量,可以选择变量的一个特定成员进行修改。

如图5-12所示。

5.2.2断点当正在执行的程序线程遇到断点,它就被挂起了。

断点视图和编辑器都会显示断点,可以通过断点视图启用或禁用断点。

当程序运行到一个可用的断点时,它就会被挂起。

可用的断点用一个蓝色的圆圈表示。

一旦在虚拟机上载入了类并且安装了断点,可用的断点就会用蓝色的圆圈上加一个勾表示。

不可用的断点不会导致线程挂起,它用一个白色的圆圈表示。

断点在编辑器区域左边的垂直标尺和断点视图中显示,如图5-13所示。

可以为程序的可执行的代码(即没有注释掉的代码)添加行断点。

步骤如下。

(1)在编辑器区域打开将要加入断点的文件。

(2)在想要添加断点的代码的左方,即垂直标尺上单击右键,并在弹出的菜单里选择【切换断点】,如图5-14所示。

还可以通过双击垂直标尺来添加断点。

在有断点的那一行代码执行之前,线程就会挂起。

调试器会自动选择被挂起的线程,并且将线程堆栈里的信息在调试视图里显示出来。

而在调试透视图的编辑器中,设置断点的那一行代码会被突出显示。

当不再需要某个断点时,可以很方便地将其删除,删除步骤如下。

(1)在编辑器区域打开将要删除断点的文件。

(2)在想要添加断点的那一行的左方,在垂直标尺上单击右键并在弹出的菜单里选择【切换断点】。

也可以通过双击源代码旁边的垂直标尺来删除断点。

如果在同一个地方经常添加或删除断点,可以启用或禁用该断点。

启用一个断点后,程序线程会在这个断点挂起;禁用该断点后,线程就不会在该处挂起。

1.方法断点方法断点只适用于二进制文件。

在Java程序里,它们适用于类文件(即.class文件)。

添加方法断点的步骤如下。

(1)在大纲视图打开一个类,选择一个想要加入方法断点的方法。

(2)单击右键并在弹出菜单里选择【切换方法断点】,如图5-15所示。

(3)断点添加以后,如果这个类的源文件存在,会在文件编辑器的标记栏里显示被选择的方法的断点。

(4)当进入该方法的那一刻,在该方法任何代码执行之前,线程就被挂起。

也可以将方法断点设置为在方法退出时中断。

2.条件断点可以为断点设定条件,以便断点在遇到以下情况才会使线程挂起。

(1)当条件成立的情况下。

(2)当条件发生变化的情况下。

为一个断点设定条件的步骤如下。

(1)找到需要设定条件的断点(通过调试视图或编辑器的标记栏)。

(2)右键单击断点,在弹出菜单中选择【断点属性】,弹出如图5-16所示的窗口。

(3)在属性菜单选择“启用条件”后,在文区域里输入条件表达式。

(4)如果希望每次条件成真时断点都会使线程挂起,那么就要在“暂挂”这一项选择“条件为true”;如果希望在根据条件判断的结果改变时才使线程挂起,就要选择另一项。

(5)点击【确定】完成条件断点的设定。

从图5-16可以看到,还有一个“命中计数”的选项。

命中计数适用于行断点、异常断点、

检查点以及方法断点。

断点启用“命中计数”后,“命中计数”就开始工作。

线程运行经过该断点n次(即设定的次数)后,线程就会被挂起。

是这个“命中计数”只能作用一次,除非它被再次启用或更改命中次数。

3.Java异常断点

通过使用异常断点,可以在抛出异常时挂起线程;可以在捕获异常的地方挂起线程;可以在未捕获异常的地方挂起;还可以在捕获和未捕获异常的地方都挂起执行。

设置Java异常断点的步骤如下。

(1)在断点视图或工作台【运行】菜单里,选择【添加Java异常断点】。

在出现的窗口会列出所有可用的异常,如图5-17所示。

(2)输入或从列表里选择一个希望捕捉的异常。

在该窗口的底部,选择希望在什么地方挂起线程。

如果希望在抛出并捕获异常的地方挂起线程,就选择“已捕获”;如果希望在没有捕获异常的地方挂起线程,就选择“未捕获”。

5.2.3远程调试由于Java调试器采用了C/S的设计,可以启动网络中其他电脑上的Java程序,并且可以在本地工作台对其进行调试。

当为不能建立开发台的计算机开发程序时,这个特性就非常有用。

调试专用主机(例如Web服务器)上的程序,它也很有用。

------------------------------------------------------------

注意:

要进行远程调试,就必须使用支持这个特性的JVM(Java虚拟机)。

JDK1.4以后的版本都支持整个特性。

------------------------------------------------------------在进行远程调试之前,必须能够在调试模式下启动远程计算机上的程序,以便它能与地调试器建立连接。

用于启动程序和链接调试器的特定技术是基于VM(虚拟机)的。

除了以上这些准备工作,还需要使用“远程Java应用程序”启动配置。

远程程序启动后,这个启动配置就会提供与应用程序建立的连接的信息。

按照以下步骤,就能进行远程调试。

(1)从工作台主菜单栏选择【运行→调试】,弹出如图5-18所示的配置窗口。

(2)在配置列表里选择“远程Java应用程序”。

点击【新建】按钮,建立一个新的远程启动配置,它有3个选项卡:

连接、源和公共。

(3)在“连接”选项卡的“项目”栏填入或选择一个项目作为启动的参考,也可以不指定项目。

在“连接”选项卡的“主机”栏,填入Java程序正在其中运行的主机的IP地址或域。

在“端口”栏,填入远地VM接受连接的端口。

一般情况下,端口都是在远地VM启动时就确定了。

“允许终止远程VM”能确定是否在调试器中启用终止命令。

(4)单击【调试】,开始尝试按照填入的地址和端口来连接VM,调试视图将会显示结果。

如果无法连接远地的VM,就会出现错误信息。

\5.3代码片段编辑测试窗JDT添加了代码片段编辑测试窗的功能,用来在构建完整的Java程序之前对部分Java代码片段进行测试和求值。

代码片段能在代码片段编辑器进行编辑和求值,产生的错误也会在编辑器中显示。

在Java代码片段编辑器中,可以选择某代码片段,计算后将其结果作为字符串显示。

代码片段编辑器允许在调试器的控制下执行、检查以及显示Java表达式。

断点和异常将保持在普通调试会话下的工作方式。

代码片段编辑测试窗页面打开之后,首次在其中对表达式求值时,VM就被启动。

在关闭(或显式终止)该页或者程序执行System.exit()语句之前,该页面的VM保持活动的状态。

5.3.1新建代码片段编辑测试窗

代码片段编辑测试窗页面以.jpage作为后缀。

下面是新建代码片段编辑测试窗的步骤。

(1)在主菜单栏上,选择【文件→新建→其他】,在弹出的窗口选择【Java→Java运行与调试→代码片段编辑测试窗页面】,如图5-19所示。

-

(2)点击【下一步】,然后在弹出的如图5-20所示的窗口里输入或选择文件夹,并且输入一个文件。

(3)完成以上工作后,点击【完成】。

一个新的代码片段编辑测试窗页面就会在编辑器中打开,如图5-21所示。

5.3.2使用代码片段编辑测试窗下面介绍如何使用代码片段编辑测试窗。

1.检查对表达式求值的结果通过这个功能,对表达式求值的结果将会在表达式视图中显示。

(1)在代码片段编辑测试窗页面中,可以输入一个

表达式,也可以突出显示代码中已有的表达式。

例如,输入“System.getProperties();”。

(2)选择该表达式,并且在快捷栏选择【检查】按钮,或单击右键在弹出的菜单里选择【检查】条目。

(3)检查的结果将在弹出的窗口显示,如图5-22所示。

(4)检查结果同时会在表达式视图显示,如图5-23所示。

 

2.显示对表达式求值的结果

这个功能将在代码片段编辑测试窗的编辑器里显示对表达式求值的结果。

(1)在代码片段编辑测试窗页面中,可以输入一个表达式,也可以突出显示代码中已有的表达式。

例如,输入“newjava.util.Date();”。

(2)点击工具栏上的【显示】按钮,或者单击右键在弹出的菜单里选择【显示】条目。

(3)求值的结果将在代码片段编辑测试窗的编辑器里突出显示,如图5-24所示。

3.执行表达式

5.4热代码替换如果采用JVM1.4以上的Java虚拟机,Eclipse提供了一个新的,称为“热代码替换”的功能,它允许调试的时候对代码进行更改。

使用“热代码替换”,只需要在编辑器中更改代码然后恢复调试即可,比选择“退出程序→更改代码→重新编译→再启动一个调试会话”的一系列步骤要方便很多。

如果启动应用程序或者执行到程序出错的地方需要很长时间,那么这无疑是个非常有用的功能。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1