Java ObjectReference JDI和JPDA中的底层对象

Java ObjectReference JDI和JPDA中的底层对象,java,jdi,jpda,Java,Jdi,Jpda,非常具体地说,在JDI和上下文中,我有以下问题: 为什么ObjectReference不公开其底层对象?它是基于某种规格的吗?是否所有不公开底层对象的实现(如Eclipse Debug Project)都是相同的 考虑到您拥有来自ObjectReference的uniqueID() 如果对前面的问题没有回答,那么解决底层对象的最佳方法是什么?我应该补充一点,我熟悉如何从StackFrame信息中获取Value,但我真正需要的是对象引用而不是字段的内部值或结构 为什么ObjectReferen

非常具体地说,在JDI和上下文中,我有以下问题:

  • 为什么
    ObjectReference
    不公开其底层对象?它是基于某种规格的吗?是否所有不公开底层对象的实现(如Eclipse Debug Project)都是相同的

  • 考虑到您拥有来自
    ObjectReference
    uniqueID()

  • 如果对前面的问题没有回答,那么解决底层对象的最佳方法是什么?我应该补充一点,我熟悉如何从
    StackFrame
    信息中获取
    Value
    ,但我真正需要的是对象引用而不是字段的内部值或结构

为什么ObjectReference不公开其底层对象

我假设您指的是
com.sun.jdi.ObjectReference
接口。如果是这样,它是两件事的结合:

  • 从表面上看,这毫无意义。ObjectReference位于运行调试器的JVM中,但目标计算机上存在相应的Java对象

  • 假设它确实有意义,那么公开实际的PBObject地址和内存内容将是一件坏事。这将允许调试器对目标JVM执行会导致硬崩溃的操作

考虑到您从ObjectReference获得uniqueID()的情况,有没有办法从JVM解析底层对象

没有

如果对前面的问题没有回答,那么解决底层对象的最佳方法是什么


<> Pa> AfAIK,除了使用JVM工具接口编写C/C++中的调试代理和配置目标JVM来运行它之外,没有办法做到这一点。谢谢