题
非常具体地,在JDI和 JPDA 上下文,我有以下问题:
为什么
ObjectReference
不暴露其基础对象吗?是基于某些规范吗? Eclipse调试项目等所有实现是否都不会暴露基础对象?考虑到您的情况
uniqueID()
从ObjectReference
, ,是否有任何方法可以从 JVM?如果没有上一个问题,那么解决基础对象的最佳方法是什么?我应该补充一点,我熟悉如何
Value
可以从StackFrame
信息,但我真的需要 对象引用 不是字段的内部值或结构。
解决方案
为什么客观不暴露其基础对象?
我假设您指的是 com.sun.jdi.ObjectReference
界面。如果是这样,那是两件事的组合:
从表面上看,这是没有意义的。对象转换在运行调试器的JVM中,但是目标计算机上存在相应的Java对象。
假设确实有意义,那么揭露实际的Pbject地址和内存内容是一件坏事。这将使调试器能够为目标JVM做事,从而导致严重崩溃。
考虑到您从ObjectReference中获得唯一的()的情况,是否有任何方法可以从JVM中解析基础对象?
不。
如果没有上一个问题,那么解决基础对象的最佳方法是什么?
AFAIK,除了使用JVM工具接口编写自己的调试代理外,没有办法做到这一点,并配置了目标JVM来运行它。
不隶属于 StackOverflow