我有一个简单的java类,我在main方法和步骤中设置了一个断点,点击' step into' (netbeans ide)。
预期:
绿线转到第
4
行和5
,直到循环结束
会发生什么:
它保持在
4
行。
我可以在控制台中看到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 | }
答案 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类似的东西,取得了不同程度的成功。