Java 调试接口的替代方案是什么

What are the alternatives to Java Debug Interface

我在 JPDA 中使用 JDI api。但是由于它的一些限制,我被困在了某个时候。 JDI 的替代方案是什么,以便我可以为 Java 程序编写自定义调试器?最好有 Java 个备选方案。

JDI 是在 JVMTI 本机 API 之上实现的。因此,如果您愿意努力实现自己的调试代理代码,则可以避开 JDI 层。

但是,我怀疑它是否能让你走得更远。我怀疑 JDI 中的限制实际上是 JVMTI 本机 API 本身的限制。 (但您可以检查 JVMTI specification 看它是否支持您想要的功能。)

是否有 JVMTI 的替代品?

据我所知,不。至少,最近的 Oracle Hotspot 版本不是!

(JDPA 规范承认并非所有 Java 实现都将实现该规范,因此可能存在其他供应商的 Java 实现以不同方式进行调试的可能性。但是,一个核心 JRE 和 JVMTI 代表了大量的软件开发工作,因此 Oracle(或其他任何人)不太可能为 Hotspot 实施 JVMTI 替代方案。)