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

  • 为什么 ObjectReference 不暴露其基础对象吗?是基于某些规范吗? Eclipse调试项目等所有实现是否都不会暴露基础对象?

  • 考虑到您的情况 uniqueID()ObjectReference, ,是否有任何方法可以从 JVM?

  • 如果没有上一个问题,那么解决基础对象的最佳方法是什么?我应该补充一点,我熟悉如何 Value可以从 StackFrame 信息,但我真的需要 对象引用 不是字段的内部值或结构。

有帮助吗?

解决方案

为什么客观不暴露其基础对象?

我假设您指的是 com.sun.jdi.ObjectReference 界面。如果是这样,那是两件事的组合:

  • 从表面上看,这是没有意义的。对象转换在运行调试器的JVM中,但是目标计算机上存在相应的Java对象。

  • 假设确实有意义,那么揭露实际的Pbject地址和内存内容是一件坏事。这将使调试器能够为目标JVM做事,从而导致严重崩溃。

考虑到您从ObjectReference中获得唯一的()的情况,是否有任何方法可以从JVM中解析基础对象?

不。

如果没有上一个问题,那么解决基础对象的最佳方法是什么?

AFAIK,除了使用JVM工具接口编写自己的调试代理外,没有办法做到这一点,并配置了目标JVM来运行它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top