我有一个简单的 java 类,我在 main 方法和步骤中设置了一个断点,方法是单击“step into”(netbeans ide)。
预期:
green line goes to line
4
and5
until loop ends
发生了什么:
It stays at line
4
.
我可以在控制台中看到打印了 i 的值。
如果 i 被打印出来,这意味着它应该转到第 5 行,即 System.out.print(i+"> ");
。
为什么它停留在第 4 行直到循环结束?
这是预览:
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/