【问题标题】:Eclipse Debugging Plugin: Access underlying java object from IJavaObject of JDTEclipse 调试插件:从 JDT 的 IJavaObject 访问底层 java 对象
【发布时间】:2013-10-02 00:02:56
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

  • 您在这方面取得了进展吗?我真的喜欢使用这样的工具!我正在考虑为自己写一些东西,但改用 OpenGL(因为我既是游戏开发者又是图形爱好者。)基本上只是一个更好的toString :)
  • 我在一年前顺利完成了我的论文。该工具当然不完美但可以使用(Eclipse 4.2、Java 7)。如果你只需要一个特殊的部分,我可以把我论文的来源、相关部分或特定的东西发给你。有兴趣可以pm Stackoverflow吗?

标签: java debugging eclipse-plugin eclipse-jdt jpda


【解决方案1】:

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

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

【讨论】:

  • 所以真的没有办法还是只是复杂得多?这最终意味着显示图像的唯一可能性是以某种方式读取所有像素值并为此创建一个全新的图像:(
  • 如果图像包含像素。我不知道 AWT Image 但 SWT Image 只包含对本机图形句柄的引用 - 你根本无法做任何事情。
  • 好的。听起来很悲伤,但很真实。至少我设法创造了颜色;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多