我正在實現一個IDebugContextListener類(eclipse開發人員工具API /庫的一部分)來偵聽調試器中的事件更改。使這種情況發生的方法是:從可變對象表示中抽取一個真實對象
private void contextActivated(ISelection context) {
if (context instanceof StructuredSelection) {
Object data = ((StructuredSelection) context).getFirstElement();
if (data instanceof IStackFrame) {
reciever.setStackFrame((IStackFrame) data);
} else {
reciever.setStackFrame(null);
}
}
}
基本上調試器給我的程序IStackFrame的,這裏面有IVariables,這給了什麼是正在調試的程序正在進行的典範。據我所知,這些是正在調試的程序上運行的真實變量的數據表示。 IVariables的功能是有限的,因爲它們可以做基本的事情,例如獲取它們代表的變量的名稱並獲得類型等。
這可能是不可能的,但有什麼辦法可以獲得副本它使用IDebugContextListener類表示的實際對象而不是IVariable數據表示形式?
我的目的是我想使用對象的內部功能。使用IVariables,我只能訪問對象內變量的屬性。
非常感謝您的回答。我想你是在我的另一個問題上發佈的。實際上,我通過仔細檢查eclipse調試可視化器源代碼(因此使用IVariable接口)開始構建我的調試工具。您能否指出或簡要描述檢查操作如何與JVM進行通信?我不確定哪部分代碼是這樣做的。它看起來像它控制表達式視圖。在一天結束的時候,我基本上正在尋找你的可視化器在調試器上做的事情,除了獲取實際的值/對象。謝謝! – KWJ2104
我相信98-99行與JVM的通信有關。對不起,我不知道更多細節 - 前一段時間我正在研究爲可視化插件提供特定邏輯結構的細節,但未能解決我的問題。所以我沒有完整的解決方案。 –