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

whi*_*rue 10 java debugging netbeans

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

预期:

绿线进入直线4,5直到循环结束

怎么了:

它保持一致4.

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

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

这是预览:

在此输入图像描述

这是我正在调试的代码:

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 | }
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 6

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

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

如果你想"欺骗"IDE能够"看到" 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");
}
Run Code Online (Sandbox Code Playgroud)

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