2013-09-26 56 views
2

對於我的masterthesis,我正在編寫一個Eclipse插件,用於在調試時可視化變量。我花費了大量的精力來創建自定義的「爬蟲」,以便對IJavaObject,IJavaType和IJavaValue等進行更加舒適的訪問。問題是,我還沒有看到任何可能在內存中獲得真正的底層對象,但只有IJavaObject包裝。Eclipse調試插件:從JDT的IJavaObject訪問底層java對象

E.g.如果我有一個java.awt.Color,我可以獲取IJavaObject並使用我的搜尋器調用方法(所以通過JDT的笨拙sendMessage)。因此,我可以查詢單個R,G和B值,構建我自己的Color對象,並可以直接顯示顏色。 但是,當涉及到一個java.awt.Image我想直接畫在某個地方,例如,我不能這樣做。我有權訪問IJavaObject和我的爬蟲程序,並且可以調用一些方法(只有那些接受原始類型作爲參數的方法),甚至可以查詢私有字段,但是我需要真正的Image對象,而不僅僅是寬度,高度或ImageObservers。

簡而言之: 有沒有可能訪問IJavaObject的實際底層對象?

在此先感謝。

+0

你有沒有做任何這方面的進展JVM?我真的會喜歡使用這樣的工具!我正在考慮爲自己寫一些東西,但使用OpenGL代替(因爲我既是遊戲開發者又是圖形愛好者。)基本上只是一個更好的'toString' :) – Philip

+0

我一年前成功完成了論文。該工具當然並不完美,但可以使用(Eclipse 4.2,Java 7)。如果您只需要特殊部分,我可以向您發送我的論文的來源,相關部分或特定內容。如果感興趣,你可以在Stackoverflow上下午嗎? – MrCube

回答

2

真實對象與調試代碼位於不同的JVM中,這意味着無法訪問它。

在對象可以包含本地對象的引用最壞的情況下(如圖形處理),這些纔有意義的對象是在運行。

+0

所以真的沒有辦法,或者只是更復雜?這最終意味着顯示圖像的唯一可能性是以某種方式讀取所有像素值併爲此創建一個全新的圖像:( – MrCube

+1

如果圖像包含像素,我不知道AWT Image是SWT 'Image'只是包含了一個對原生圖形句柄的引用 - 你根本無法做任何事情。 –

+0

好吧,聽起來很傷心但是真實。至少我設法創造了顏色;) – MrCube