Professional Documents
Culture Documents
China
搜索: 在 dW 全部内容
只用 + - " " ( )
级别:中级 调试 Java
热交换错误修正:实时代码修正
调试其它语言
独立软件顾问
结束语
2003 年 10 月 参考资料
关于作者
相关内容:
Working the Eclipse Platform
调试是程序员无法回避的工作。调试方法有许多种,但归根结底,就是找到引发错误的代 Getting started with the Eclipse Platform
在 Linux 专区还有:
单。 教程
工具与产品
文章
● 项目管理工具
● 透视图和视图
● 构建器、编辑器、搜索和构建功能
● 调试器
调试 Java
在您能调试您的项目之前,需要先完整地编译和运行代码。您首先需要为您的应用程序创建运行配置并确认其正常启动。之
后,您需要使用 Run > Debug... 菜单,以同样的方式设置调试配置。您还需要选择作为主 Java 类的由调试器使用的类(也请
参阅图 2)。对一个项目,您希望有几种调试配置就可以有几种。当调试器启动后(通过 Run > Debug...),会在一个新窗口
打开它,您可以准备开始调试。
图 2. 在调试配置中设置项目的主 Java 类
设置断点
当您启动应用程序以进行调试时,Eclipse 自动切换到 Debug 透视图。无庸置疑,最常见的调试过程就是设置断点,以允许检
查在条件语句和循环中的变量和值。要在 Java 透视图的 Package Explorer 视图中设置断点,双击所选的源代码文件,在编辑
器中打开它。遍历全部代码,将光标放置在含有可疑代码的那一行的标记栏上(在编辑器区域的左侧)。双击以设置断点(也
请参阅图 3)。
图 3. 在编辑器左侧边缘可看到两个断点标记
图 4. 视图通过左侧边缘的箭头指出当前正在执行的行
条件断点
一旦您找到出错的地方,您会想要了解在崩溃前程序在干些什么。完成该工作的一种方法是单步执行程序中的每条语句,一次
一句,直到到达出问题的地方。有时候更好的方法是仅运行某段代码并在出问题的地方终止其执行,这样就可以检查该位置上
的数据。要实现这一点,可能要声明每当表达式的值更改时就被触发的条件断点(请参阅图 5)。此外,在输入条件表达式时
还可以使用代码辅助。
图 5. 设置条件断点触发器
对表达式求值
要在 Debug 透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择 Inspect 选项(请参阅图
6)。表达式是在当前堆栈帧的上下文中求值的,其结果显示在 Display 窗口的 Expressions 视图中。
图 6. 用 Inspect 选项求表达式的值
查看变量
Variables 视图(在 Display 窗口中)显示了选中的堆栈帧中的变量值(请参阅图 7)。要查看所请求的变量,只需展开
Variables 视图中的树直到您看到所请求的元素为止。您也可以在 Debug 视图中单步执行代码的同时,在 Variables 视图中查
看变量。
图 7. 在 Display 窗口中查看变量
图 8. Run... 菜单中的调试器命令
热交换错误修正:实时代码修正
如果您运行的是 JVM 1.4(Java 虚拟机,Java Virtual Machine),Eclipse 2.0.2 和 2.1 提供一个叫做热交换错误修正
(Hotswap Bug Fixing)的新功能(无法用于 JVM 1.3 或更低版本 - 也请参阅图 9)。它允许在调试器会话过程中更改源代
码,这要比“退出应用程序,更改源代码,重新编译,再启动另一个调试会话”的一系列步骤好多了。要使用该功能,只需在编
辑器中更改代码并恢复调试。由于 JVM 1.4 与 Java 平台调试器体系结构(Java Platform Debugger Architecture,JPDA)兼
容,所以能使用该功能。JPDA 实现了在运行中的应用程序中用经过修改的代码进行替换的能力。当然,当启动您的应用程序
或找到出错点需要花费很长时间的时候,该功能极其有用。
远程调试
Eclipse 调试器提供了一个有趣的选项,可用于调试远程应用程序。它可以连接到一个运行 Java 应用程序的远程 VM 上,并将
其连接到内部调试器上。处理远程调试会话非常类似于本地调试。不过,远程调试配置要求对 Run > Debug... 窗口进行不同
如果启动器无法连接至指定位置上的 VM,将显示错误消息。一般来说,远程调试功能的可用性完全取决于远程主机上运行的
Java VM(虚拟机,Virtual Machine)。图 10 显示了远程调试会话的连接属性的设置。
图 10. 设置远程调试会话的连接属性
调试其它语言
Java 是 Eclipse 平台的主语言。然而,Eclipse 平台同时也是一个可支持许多其它语言的可扩展平台,而其中最重要的就是支
持 C/C++(因为其流行性)。Eclipse 通过用 C/C++ 开发工具(CDT)支持 C/C++。请参阅参考资料以获取相关链接。CDT
通过调试 C/C++ 代码的功能扩展了标准的 Eclipse Debug 视图,同时 CDT Debug 视图允许您在工作台中管理 C/C++ 项目的
调试。CDT 不包含其内部调试器,但它向必须可在本地使用的 GNU GDB 调试器提供了一个前端。
如果您要调试 servlet,使用 Sysdeo Eclipse Tomcat Launcher。该插件使您能够管理 Tomcat 4.x/3.3 servlet 容器(通过创建
和导入一个 Tomcat WAR 项目)。它同时在一个内部 Java Eclipse 调试器中注册一个 Tomcat 进程,这样您就能方便地调试
Tomcat 应用程序了。还有其它几个 Eclipse 插件,使我们能够对 servlet 使用内部 Eclipse 调试器,比如 Cactus 的 Eclipse 插
件,Resin 插件和 X-Parrots ServletExec 插件。在下面的参考资料中可获得这些插件的链接。
结束语
Eclipse 平台提供了内置的 Java 调试器,该调试器具有标准调试功能,包括进行单步执行、设置断点和值、检查变量和值以及
暂挂和恢复线程的能力。它还可以用于调试在远程机器上运行的应用程序。Eclipse 平台主要是一个 Java 开发环境,但是同一
个 Eclipse 的 Debug 视图也可用于 C 和 C++ 编程语言。
参考资料
● 查看 Eclipse 插件的分类注册表。
关于作者
Paul Leszek,是 Studio B 的一名作者,同时也是专长于 Linux/Win/Mac OS 系统体系结构和管理的独立软件顾问。在许多操作系统、编程语言和网络协议,尤其
是 Lotus Domino 和 DB2 方面,他都有经验。Paul 同时还是“LinuxWorld”系列文章的作者,以及波兰语版“PC World”的 Linux 专栏作家。Paul 和他的妻子及他们
可爱的小女儿一起住在华沙。Paul 欢迎您的问题和意见;可通过 pawel.leszek@ipgate.pl 直接发电子邮件给作者。
到页首
您对这篇文章的看法如何?
意见?
提交反馈意见
(c) Copyright IBM Corp. 2001, (c) Copyright IBM China 2001, All Right Reserved
关于 IBM | 隐私条约 | 使用条款 | 联系 IBM