【问题标题】:ObjectReference underlying object in JDI and JPDAJDI 和 JPDA 中的 ObjectReference 底层对象
【发布时间】:2011-05-09 02:22:24
【问题描述】:

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

  • 为什么ObjectReference 不暴露其底层对象?它是基于一些规范吗? Eclipse Debug Project 等不暴露底层对象的所有实现都是一样的吗?

  • 考虑到您拥有来自ObjectReferenceuniqueID() 的情况,有没有办法从JVM 解析底层对象?

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

【问题讨论】:

    标签: java jdi jpda


    【解决方案1】:

    为什么 ObjectReference 不暴露其底层对象?

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

    • 从表面上看,这没有任何意义。 ObjectReference 在运行调试器的 JVM 中,但目标机器上存在对应的 Java 对象。

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

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

    没有。

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

    AFAIK,除了使用 JVM 工具接口在 C/C++ 中编写自己的调试代理并配置目标 JVM 以运行它之外,没有其他办法。

    【讨论】:

    • 实际上我们在一个 JVM 中处理 ObjectReference 并在另一个 JVM 中处理 Object,这是一个很好的观点。谢谢。
    猜你喜欢
    • 2013-12-16
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多