java - eclipse 的检查功能像个傻瓜一样欺骗我,为什么调试时看起来那么棘手?

标签 java eclipse debugging

Eclipse 非常适合编写 Java 程序,但今天我发现它非常适合欺骗像我这样的新编码员。 @_@

我写了一个片段如下,

public static void main(String[] args) {
    for(int i=0;i<3;i++){
        System.out.println("i = " + i);
    }
}

然后我在“System.out.print....”行添加一个断点,单击“调试”按钮,eclipse 进入“调试”透视图并且断点行被突出显示,然后我移动光标在变量“i”上,它的值如预期的那样为“0”。

然后,我选择“i++”并单击“检查”(或按“Ctrl+Shift+I”)一次,我将光标移到变量“i”上,它的值变为“1”。我又重复了一遍“Inspect”,i的值变成了“2”……(每次点击“Inspect”它的值都会加1)!!

为什么会这样!?我只想查看“i”的值以进行调试,在进入下一条语句之前不想真正更改它的值。我认为“Inspect”和“Display”仅用于查看变量/表达式,它们不应该影响值,但在这种情况下,它不会像我预期的那样工作。

谁能告诉我哪里出了问题?

My eclipse version info:
Version: Indigo Service Release 2
Build id: 20120216-1857

Select "i++" and click "Inspect"

最佳答案

如果您检查一个表达式,eclipse 必须执行该表达式以便您可以获取值。因此,如果您检查 i++,eclipse 会将 1 添加到 i

这样想:如果您检查的不是 i++,而是 myFunction(i),您会期望 eclipse 执行函数“myFunction”来获取值吗? i++也是一样。

关于java - eclipse 的检查功能像个傻瓜一样欺骗我,为什么调试时看起来那么棘手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13307321/

相关文章:

regex - Eclipse - 如何替换/删除行

Python 子模块未导入

内容辅助 Eclipse C - 显示项目

debugging - 是否可以将 gdb 附加到崩溃的进程(又名 "just-in-time"调试)

jquery - Chrome 在 try/catch block 中因异常而暂停,如何自动恢复?

Java 列表对象而不是数组

java - 如何找到字符串中最长的单词?

c# - 无法再在 Visual Studio Express 下进行调试

java - JAXB/Jackson XML 通用序列化

java - 尝试使用 jOpenDocument 获取 .ods 单元格时出现 IndexOutOfBoundException