Java 平台调试器体系结构

Java™ 平台调试器体系结构 (JPDA) 由 JVM 调试接口 /JVM 工具接口, Java 调试连线协议和 Java 调试接口组成。 JPDA 的所有这些部件都支持使用 JDWP 执行调试操作的调试器的任何前端。 调试器前端既可远程运行,也可作为 IBM i 应用程序运行。

Java 虚拟机工具接口 (Java Virtual Machine Tool Interface , JVMTI)

JVMTI 取代 Java 虚拟机调试接口 (JVMDI) 和 Java 虚拟机概要分析程序接口 (JVMPI)。 JVMTI 包含 JVMDI 和 JVMPI 的所有功能以及新功能。 JVMTI 已作为 J2SE 5.0的一部分添加。 在 JDK 6 中,不再提供 JVMDI 和 JVMPI 接口, JVMTI 是唯一可用的选项。

有关使用 JVMTI 的更多信息,请参阅 Oracle America , Inc. 上的 JVMTI 参考页面信息中心外部链接 。 Web 站点。

Java 调试有线协议

Java 调试连线协议 (JDWP) 是调试器进程与 JVMDI/JVMTI 之间定义的通信协议。 可以从远程系统使用 JDWP ,也可以通过本地套接字使用 JDWP。 它是从 JVMDI/JVMTI 中除去的一层。

在 QShell 中启动 JDWP

要启动 JDWP 并运行 Java 类 SomeClass, ,请在 QShell 中输入以下命令:

java -interpret -agentlib:jdwp=transport=dt_socket,
address=8000,server=y,suspend=n SomeClass

在此示例中, JDWP 侦听来自 TCP/IP 端口 8000 上的远程调试器的连接,但您可以使用所需的任何端口号 ;dt_socket 是处理 JDWP 传输的 SRVPGM 的名称,不会更改。

有关可用于 -agentlib 的其他选项,请参阅 Oracle America , Inc. 的 Sun VM 调用选项信息中心外部链接

从 CL 命令行启动 JDWP

要启动 JDWP 并运行 Java 类 SomeClass, 请输入以下命令:
JAVA CLASS(SomeClass) INTERPRET(*YES) 
     PROP((os400.xrun.option 'jdwp:transport=dt_socket,address=8000,server=y,suspend=n'))

Java 调试接口

Java 调试接口 (Java Debug Interface , JDI) 是为工具开发提供的高级 Java 语言接口。 JDI 隐藏了某些 Java 类定义背后的 JVMDI/JVMTI 和 JDWP 的复杂性。 JDI 包含在 rt.jar 文件中,因此调试器的前端存在于安装了 Java 的任何平台上。

如果要编写 Java 的调试器,那么应该使用 JDI ,因为它是最简单的接口,并且您的代码与平台无关。

有关 JDPA 的更多信息,请参阅 Oracle America , Inc. 的 Java Platform Debugger Architecture信息中心外部链接