java 调试不能正确显示当前行

标签 java debugging netbeans

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

预期:

green line goes to line 4 and 5 until loop ends

发生了什么:

It stays at line 4.

我可以在控制台中看到打印了 i 的值。
如果 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 | }

最佳答案

我之前在使用 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");
}

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

关于java 调试不能正确显示当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671271/

相关文章:

java - 如何使 ImageView 的高度成为图像的高度?安卓

java - 列出javac编译的Java源文件

java - 在 Java JFrame 上添加图像 - Netbeans

xml - 属性的 ref 不适用于 Netbeans 下的复杂类型

c++ - 通过删除堆分配的变量来解决堆溢出错误?

java - 将两个 JTextField 相乘以显示答案

JavaEE : Sharing entity classes between server and clients

java - Java8 中的 BiSupplier

有人可以帮我分析这些 valgrind 输出吗?

android - “在 Chrome 中调试”不适用于 android 的 native react