2017-10-18 79 views
-3

我在JPDA中使用JDI api。但由於它的某些限制,我在某些時候被卡住了。 JDI有什麼替代方案,以便我可以爲Java程序編寫自定義調試器?最好是Java替代品。什麼是Java調試接口的替代方案

+1

爲什麼您需要替代方案? 「由於某些限制」意味着什麼?是什麼讓你覺得*有其他選擇?爲什麼Sun和Oracle會兩次做同樣的工作? – EJP

+0

@EJP Oracle表示,調試器實現者可以編寫代碼與JPDA的JDWP層直接交互。所以它可能有一些替代品可以提供更多的功能。 – rainyday

+0

而@EJP我想要繼續關注JDI不支持的局部變量的修改和訪問。 – rainyday

回答

1

JDI在JVMTI本機API之上實現。所以,如果你願意去實現你自己的調試代理代碼,你可以避免使用JDI層。

但是,我懷疑它會讓你更進一步。我懷疑JDI中的限制實際上是JVMTI本地API本身的限制。 (但是,您可以查看JVMTI specification以查看它是否支持您所需的功能。)

是否有替代JVMTI的選項?

AFAIK,no。至少,不是針對最近的Oracle Hotspot版本! (JDPA規範承認,並非所有的Java實現都將實現規範,所以其他廠商的Java實現可能存在不同的調試方式,但核心JRE和JVMTI之間的集成代表了很多軟件因此Oracle(或任何其他人)不太可能爲Hotspot實施JVMTI替代方案。)