java - Eclipse调试插件: Access underlying java object from IJavaObject of JDT

标签 java debugging eclipse-plugin eclipse-jdt jpda

对于我的硕士论文,我正在编写一个 Eclipse 插件,用于在调试时可视化变量。我投入了大量精力来创建自定义“爬虫”,以便轻松访问 IJavaObject、IJavaType 和 IJavaValue 等。问题是,我没有看到任何在内存中获取真正的底层对象的可能性,而只是 IJavaObject 包装器。

例如如果我有一个 java.awt.Color,我可以获取 IJavaObject 并使用我的爬虫调用方法(因此通过 JDT 的笨拙的 sendMessage)。因此我能够查询单个 R、G 和 B 值,构建我自己的 Color 对象并可以直接显示颜色。 但是当涉及到 java.awt.Image 我想直接在某个地方绘制时,例如,我不能这样做。我可以访问 IJavaObject 和我的爬虫,并且可以调用一些方法(顺便说一句,仅限那些接受基本类型作为参数的方法),甚至查询私有(private)字段,但我需要真正的 Image 对象,而不仅仅是它的宽度、高度或 ImageObservers。

简而言之: 是否有可能访问 IJavaObject 的真实底层对象?

提前致谢。

最佳答案

真实对象与调试代码位于不同的 JVM 中,这意味着无法访问它。

在最坏的情况下,对象可能包含对 native 对象(可能是图形句柄)的引用,这些引用仅在对象运行的 JVM 中有意义。

关于java - Eclipse调试插件: Access underlying java object from IJavaObject of JDT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19021131/

相关文章:

java - Mysql 和 Hibernate 以及 Lob 列

android - 用于调试的静态 Toast 例程

javascript - 如何让这个 ajax 下拉选择器适用于所有浏览器?

java - JFace TreeViewer,当某些空文件夹被填充时如何通知树

javascript - eclipse javascript 编辑器 '10

java - Jboss 7 上的 Jersey 2

java - 来自多个数据库的 Hibernate 实体

java - 静态变量初始化?

c# - 在调试器中正确显示列表的子类

java - eclipse插件项目根目录