2012-10-11 23 views
0

在eclipse調試視圖中的Eclipse調試器會話期間,可以更改任意原始變量甚至字符串。在調試過程中更改eclipse中的對象引用

我想知道爲什麼它似乎也不可能改變對象的變量引用。 例如如果有類似

ClassLoader cl = ClassLoader.getCallerClassLoader() 

在代碼中,我想能夠在綁定變量(在輕鬆感「的值更改」)在調試過程中

cl = Thread.currentThread().contextClassLoader 

我錯了嗎(可以做到這一點),如果沒有,是否有任何概念上的原因(所以除了「沒有人簡單地做過這件事」之外的其他原因)?

回答

4

它表明,你實際上可以在一個回合的方式做到這一點。代碼: -

import org.junit.Test; 

public class TestDebug { 

    @Test 
    public void test() { 
    Object foo = new Object(); 
    System.err.println(foo); 
    } 
} 

syserr行的斷點。

選擇「這個」的變量查看然後在底部鍵入到細節區下面的代碼: -

富=新的java.util.ArrayList()

現在選擇上述表達式和按shift + ctrl + i(檢查),它會執行代碼。注意,foo現在包含一個數組列表!

+0

非常好,不知道這個... 現在,有沒有辦法在靜態環境中做同樣的事情(即當沒有「this」時)? – user462982

+0

好吧,我找到了一種方法: 選擇需要更改的(靜態)對象(在變量視圖中)。 使用細節區域來定義新的表達式: *只是沒有賦值的新表達式 *無尾隨分號 *完全限定名稱 例如, new java.util.LinkedList() 然後,使用上下文菜單中的Assign Value選項(右鍵單擊到詳細信息區域)。 – user462982

2

您可以在調試器中掛起的線程中手動execute any piece of Java code,包括分配給當前堆棧框架上下文中可見的所有變量或字段。

所以是的,那個任務應該是可能的。

+0

感謝Bananeweizen,你的回答也是有效的,但我選擇了Mumrah's,因爲他是第一個,並有一個詳細的例子。 – user462982

相關問題