JPDA 概览
JPDA 的全称是「Java Platform Debugger Architecture」,它是一个多层的调试架构,支持创建跨平台的调试程序,可同时支持不同的虚拟机实现和不同的 JDK 版本。
JPDA 架构
JPDA 的架构如下图所示:
1 | Components Debugger Interfaces |
上面的模块代表的是 Java 虚拟机,下面的模块则是调试方,中间是通信的通道。从上往下看,对应的调试接口依次为:
- 最上面 JVM TI,定义了虚拟机提供的调试服务接口
- 中间的是 JDWP,定义了调试方和被调试进程之间的通信方式
- 最下面的 JDI,它提供了一个更高级别的 Java 语言接口,使得开发人员能够更容易地开发出远程调试程序
再看下它们之间的关系
- JVM TI 提供了最基础的服务接口,可用于监控 Java 虚拟机的状态、控制 Java 虚拟机上的程序执行。它是一个双向的接口,既可以监听并处理感兴趣的「事件」,又可以通过 JVM 提供的访问控制「函数」控制程序的运行
- 「back-end」基于 JVM TI 实现了 JDWP 的被调试侧的功能
- 「front-end」使用 JDWP 实现了调试侧的 JDI 服务接口
参考
https://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html