Java调试教程-Java调试器(JDB)概述
2008-01-05 09:16:46 来源:WEB开发网核心提示:摘要虽然现在有一些很好的调试工具,然而 java 调试器 (JDB) 提供了一些优点,Java调试教程-Java调试器(JDB)概述,最重要的是 JDB 可以免费获取并且是平台独立的,其缺点是它只有命令行格式,实际上,它们使用定制类装入器,一些开发人员认为这很原始,而且难以使用
摘要
虽然现在有一些很好的调试工具,然而 java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。
--------------------------------------------------------------------------------
Java调试教程--Java调试器(JDB)概述
SUN Laura Bennett
什么是 JDB?
虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。有关具体信息,请参考关于 Java 调试 API 的章节。
JDB 的具体信息
可以为调试多个项目配置 JDB。JDB 将查找 user.home 目录中的 jdb.ini 配置文件。因此,对于每个项目,应该将 user.home 特性设置成指向另一个目录中的另一个 .ini 文件。可以输入以下命令来完成此操作:
jdb -J-Duser.home=. //Will look in the current Directory for the
//jdb.ini file
jdb.ini 文件可以启动 JDB 会话,传递参数并关于系统的信息。以下是 jdb.ini 文件的一个示例。它包括了源路径列表中的 Java 平台源码,并将参数 34 传递给程序。然后它运行并在第 2 行停止,显示可用内存并等待进一步输入。
load MyTest
stop at MyTest:20
use c:/java;c:/jdk/src
run MyTest 34
memory
可以用 JDB 记录调试会话。通过在运行 JDB 的目录中创建文件 .agentLog,以启用日志记录。在 .agentLog 文件中,在第一行中放入要将会话信息写入其中的文件名。运行 jdb 命令时,将会看到 jdb 会话信息。日志文件可能包含以下内容:
-------- debug agent message log --------
[debug agent: adding Debugger agent to system thread list]
[debug agent: adding Breakpoint handler to system thread list]
[debug agent: no sUCh class: Myapplication.main]
使用 JDB 和 Servletrunner 调试 Servlet 在下一章中,我们将完成一个练习使用 JDB 和 Servlet 引擎调试 Servlet。Tomcat 是与 JDB 对接得很好的 jsp/Servlet引擎。其它是 Windows 应用程序 .exe 文件的 Servlet 引擎不能以调试方式运行。然而,Tomcat 有一个启动脚本,该脚本答应您配置它以便调试。需要配置 TOMCAT_OPTS环境变量。 以调试方式运行引擎还会影响 CLASSPATH。使用 -Xbootclasspath 以及在JDK 2.0 中找到的 rt.jar 和 tools.jar 文件的路径来设置引导类路径。或者,可以使用 Servletrunner 进行调试。Servletrunner 是 JSDK 附带的应用程序。它让您可以不使用 Web 浏览器就运行 Servlet。Servletrunner 运行时就象 Java Web服务器,但又比 Java Web 服务器轻便。它处理 Servlet 的HTTP 请求。Servletrunner 运行 java sun.servlet.http.HttpServer 命令。应该使用 HttpServer() 类来运行jdb 会话。
在调试 Servlet 时,请记住 Java Web 服务器和 Servletrunner 不会通过在 CLASSPATH 中包括 Servlet 目录来装入和卸装 Servlet。实际上,它们使用定制类装入器,而不是缺省系统类装入器。
更多精彩
赞助商链接