在eclipse调试视图中的Eclipse调试器会话期间,可以更改任意原始变量甚至字符串。
我想知道为什么似乎不可能更改对象的变量引用。 例如。如果有像
这样的东西 ClassLoader cl = ClassLoader.getCallerClassLoader()
在代码中我希望能够将变量绑定(“放松地将其值改变”)到
cl = Thread.currentThread().contextClassLoader
在调试期间。
我错了(有可能做到这一点),如果没有,是否有任何概念上的原因(其他原因除了“没有人只是这样做了”)?
答案 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,包括对当前堆栈帧上下文中可见的所有变量或字段的赋值。
是的,这项任务应该是可能的。