摘要
在 Java 编程的初期,典型的开发人员使用非常陈旧的调试方法,即使用 Java System.out.println() 方法进行调试。代码运行轨迹被打印到控制台、文件或套接字中。很少有开发人员可以一次性就创建出完美的代码。因此,市场意识到程序员需要使用几种调试器。Java 开发人员现在随时可以使用许多调试工具。
--------------------------------------------------------------------------------
Java调试教程--初步介绍
SUN Laura Bennett
当初……
在 Java 编程的初期,典型的开发人员使用非常陈旧的调试方法,即使用 Java System.out.println() 方法进行调试。代码运行轨迹被打印到控制台、文件或套接字中。很少有开发人员可以一次性就创建出完美的代码。因此,市场意识到程序员需要使用几种调试器。Java 开发人员现在随时可以使用许多调试工具。选择哪种工具取决于您有多少经验。通常,初学者使用面向 GUI 的调试器,而有经验的程序员会避免使用 WYSIWYG 技术以便获得更多的控制。
每个开发人员都应该使用调试器或调试工具。调试器可以让您单步调试代码、冻结输出并检查变量。调试工具可以帮助有经验的开发人员更迅速地找到发生问题的位置。
Java 调试器的类型可以使用几种 Java 调试技术:
IDE 包含它们自己的调试器(如 IBM VisualAge for Java、Symantec Visual Cafe 和 Borland JBuilder)独立 GUI(如 Jikes、Java Platform Debugger Architecture javadt 和 JProbe)基于文本和命令行驱动(如 Sun JDB)使用编辑器(如“记事本”或 VI)的硬算和目测堆栈跟踪所使用的 JDK、JSDI、jsp 和 Html 的版本都会影响您的选择。
IDE 和独立的 GUI 调试器对于初级程序员是最佳选择,而且经证实它们是最省时的。调试器可以指出程序崩溃的位置。在调试器中执行程序,用鼠标来设置断点并单步调试源代码。使用这些调试器的副作用是并不是所有的 IDE 调试器都支持 Java API 和技术(如 Servlet 和 EJB 组件)。
基于文本和硬算技术提供了更多的控制,但对于经验不足的 Java 程序员来说,可能需要更长的时间才能找到错误。我们把它们称作“笨人”调试器方法。假如以上的调试方法还没有满足您的需要,Java 平台已经引入了 Java 调试 API,可以使用它来创建非凡符合您需要的调试器。
调试会话的类型
在客户机和服务器上,都有许多调试方法。我们将在本教程中讨论以下方法:
基本 Java 字节码(即,使用 System.out.println())
使用注释
连接到正在运行的程序
远程调试
按需求调试
优化代码调试
Servlet、JSP 文件和 EJB 组件调试
我们将在教程中具体讨论每一种调试方法。
常见错误类型
为了提示可能碰到的情况,以下列出了开发人员经常会碰到的常见错误:
编译或语法错误是可能碰到的第一个错误,同时也是最轻易调试的错误。它们通常是输入错误所导致的。
逻辑错误与运行时错误不同,因为它们不会抛出异常,但不会出现输出,这与预期的不同。这些错误涉及的范围从缓冲区溢出到内存泄漏。
运行时错误在执行程序期间发生,通常会生成 Java 异常。
线程错误是最难重复和追捕的。
Java 调试 API
Sun 已经定义了一个调试体系结构,叫作 JBUG,用于满足对真正 Java 调试器的需求。
这些 API 有助于程序员构建符合以下这些要求的调试器:
接口应该是面向对象的,并且与语言保持相同风格。
应该完全支持 Java 运行时功能部件,如线程和监控程序。
应该可以进行远程调试。
在正常操作下,不应该泄露安全性。
经修订的 Java 调试器 (JDB) 既是 Java 调试 API 概念的证实,也是一个实用的调试工具。它被改写成使用 Java 调试接口 (JDI),并且成为 JDK 的部件。第 9 章中讨论了 JDB。