0

Eclipse デバッグ ビューでの Eclipse デバッガー セッション中に、任意のプリミティブ変数や文字列を変更することができます。

オブジェクトへの変数参照も変更できないように見えるのはなぜでしょうか。たとえば、次のようなものがある場合

 ClassLoader cl = ClassLoader.getCallerClassLoader()

コードでは、変数をバインドできるようにしたい(リラックスした意味で「その値を変更する」)

 cl = Thread.currentThread().contextClassLoader

デバッグ中。

私は間違っていますか(これを行うことは可能です)、そうでない場合、概念的な理由はありますか(「まだ誰もこれを行っていない」以外の理由があります)?

4

2 に答える 2

4

実際にこれをラウンドアバウトに行うことができることが明らかになりました。コード:-

import org.junit.Test;

public class TestDebug {

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

syserr 行のブレークポイント。

変数ビューで「this」を選択し、下部の詳細領域に次のコードを入力します:-

foo = 新しい java.util.ArrayList()

上記の式を選択し、shift+ctrl+i (検査) を押すと、コードが実行されます。見よ、foo に配列リストが含まれるようになった!

于 2012-10-11T14:00:19.070 に答える
2

現在のスタック フレームのコンテキストで表示されるすべての変数またはフィールドへの割り当てを含め、デバッガーの中断されたスレッドでJava コードの任意の部分を手動で実行できます。

そうです、その割り当ては可能でなければなりません。

于 2012-10-11T20:03:35.870 に答える