在调试期间更改eclipse中的对象引用

时间:2012-10-11 13:46:53

标签: java eclipse debugging object variable-assignment

在eclipse调试视图中的Eclipse调试器会话期间,可以更改任意原始变量甚至字符串。

我想知道为什么似乎不可能更改对象的变量引用。 例如。如果有像

这样的东西
 ClassLoader cl = ClassLoader.getCallerClassLoader()

在代码中我希望能够将变量绑定(“放松地将其值改变”)到

 cl = Thread.currentThread().contextClassLoader

在调试期间。

我错了(有可能做到这一点),如果没有,是否有任何概念上的原因(其他原因除了“没有人只是这样做了”)?

2 个答案:

答案 0 :(得分:4)

事实证明,你可以实现这一目标。代码: -

import org.junit.Test;

public class TestDebug {

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

syserr行上的断点。

在变量视图中选择“this”,然后在底部输入以下代码的详细信息区域: -

foo = new java.util.ArrayList()

现在选择上面的表达式并按Shift + ctrl + i(inspect),它将执行代码。 Lo和behold foo现在包含一个数组列表!

答案 1 :(得分:2)

您可以在调试器的挂起线程中手动execute any piece of Java code,包括对当前堆栈帧上下文中可见的所有变量或字段的赋值。

是的,这项任务应该是可能的。