我在JPDA中使用JDI api。但由于它有一些限制,我在某些方面陷入困境。有什么替代JDI,以便我可以为Java程序编写自定义调试器?优选Java替代品。
答案 0 :(得分:1)
JDI是在JVMTI本机API之上实现的。因此,如果您愿意去实现自己的调试代理代码,则可以避免使用JDI层。
然而,我怀疑它会让你更进一步。我怀疑JDI中的限制实际上是JVMTI本机API本身的限制。 (但您可以查看JVMTI specification以查看它是否支持您所需的功能。)
JVMTI有替代品吗?
AFAIK,没有。至少,不适用于最近的Oracle Hotspot版本!
(JDPA规范承认并非所有Java实现都将实现规范,因此存在其他供应商和Java实现以不同方式进行调试的可能性。但是,核心JRE和JVMTI之间的集成代表了很多软件开发工作,因此Oracle(或其他任何人)不太可能为Hotspot实现JVMTI替代方案。)