java调试没有正确显示当前行

时间:2015-07-28 08:37:43

标签: java debugging netbeans

我有一个简单的java类,我在main方法和步骤中设置了一个断点,点击' step into' (netbeans ide)。

预期:

  

绿线转到第4行和5,直到循环结束

会发生什么:

  

它保持在4行。

我可以在控制台中看到i的值被打印出来 如果我打印出来,那就意味着它应该转到第5行System.out.print(i+" > ");

为什么它一直停留在第4行,直到循环结束?

这是预览:

enter image description here

This is the code i'm debugging:

2 | public class NewClass2 {
3 |     public static void main(String[] args) {
4 |         for (int i = 0; i < 10; i++) {
5 |             System.out.print(i+" > ");
6 |         }
7 |         System.out.println("end of the loop");
8 |     }
9 | }

1 个答案:

答案 0 :(得分:6)

在使用IntelliJ之前,我已经看到了类似的行为。我相信正在发生的事情是System.out.println()的调用实际上在构建过程中得到了优化。因此,在完成代码构建后,对System.out的调用实际上并不存在。当你去调试时,调试器无法获取这个代码的钩子,因为它不是你在屏幕上看到的那种形式。

顺便说一句,你应该获得一张徽章,用于在你的OP中发布一个非常好的动画GIF。我认为这是我第一次见到这一点,并且在你的问题中它的效果非常好。

如果你想&#34;欺骗&#34; IDE能够&#34;看到&#34; System.out电话,您可以尝试使用以下代码:

public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        String stuff = "";
        System.out.print(i + " > " + stuff);
        stuff += "more stuff";
    }
    System.out.println("end of the loop");
}

System.out的行上添加您的断点,您的NetBeans IDE 可能能够看到它。我尝试过与IntelliJ类似的东西,取得了不同程度的成功。