无法将成员变量设置为空

时间:2015-10-20 14:56:31

标签: java debugging intellij-idea weblogic12c

我真的想为这个问题提供一个最小的工作示例,但我没有成功创建一个。因此,我将描述正在发生的事情,并希望有人可以提供帮助。

在我的代码的某处,我有以下几行:

long i = 0;
while (this.someField != null) {
    this.someField = null;
    i++;
}
long j = i;

(此代码是我已经完成的大量调试的结果,用于查找问题的原因。)

此代码部署在WebLogic应用程序服务器上。我在while循环之前设置了断点。我用IntelliJ远程调试代码。

当代码命中断点时,我会一步一步地执行它。代码只是循环遍历while循环,但someField永远不会变为null。所以我在循环之后的行处设置了第二个断点,然后点击 continue 。代码立即退出循环并停在此行。我可以告诉我没有更多的循环执行,因为我之后会检查i。但是,this.someField 仍然不为空。我多次尝试过,所以我很确定代码继续执行循环的原因是我正在调试它。

我不知道如何调试此问题。我的观察没有任何意义(除非我应用量子力学)。什么可能导致这种行为?这是我的JVM中的错误吗?调试器中的错误?还有别的吗?

编辑:

该字段声明如下:

 private Vector<KeyValuePair> someField = null;

它是私有的,我确保通过在所有使用它的方法上设置断点来改变另一个线程。

1 个答案:

答案 0 :(得分:0)

这似乎是IntelliJ调试器的问题。调试器在调试时设置值,控制流根据此修改进行更改。当我使用Eclipse调试器时,问题就消失了。