java - step into step over区别




Eclipse调试器中的Step Into和Step Over之间有什么区别? (4)

我想调试一个Java程序的整个流程。 eclipse中的F5 (step into)和F6 (step over)之间有什么区别?


Step Into调用当前选定行上的下一个表达式,并在调用的方法中的下一个可执行行处挂起执行。

跳过当前选定的行被执行并挂起到下一个可执行行。


在调试代码行时,通常情况如下:

  • Step Into )方法即将被调用,并且您想调试该方法的代码,因此下一步是进入该方法并继续逐步调试。
  • 跳过 )方法即将被调用,但您对调试此特定调用不感兴趣,因此您希望调试器完全将该方法作为一个完整步骤执行。
  • Step Return )你已经完成了一步一步地调试这个方法,你只是希望调试器运行整个方法,直到它作为一个完整的步骤返回。
  • 恢复 )您希望调试器恢复“正常”执行而不是逐步执行
  • Line Breakpoint )你不关心它是如何到达那里的,但是如果执行到达特定的代码行,你希望调试器暂时暂停执行,那么你可以决定怎么做。

Eclipse具有其他高级调试功能,但这些是基本原理。

也可以看看


深入挖掘方法调用
一步一步地执行该行并转到下一行


f(x);处考虑下面的代码和你当前的指令指针(接下来要执行的那一行f(x); g(2)行,由main()g(2)行调用:

public class testprog {
    static void f (int x) {
        System.out.println ("num is " + (x+0)); // <- step into
    }

    static void g (int x) {
->      f(x); // <----------------------------------- current location
        f(1); // <----------------------------------- step over
    }

    public static void main (String args[]) {
        g(2);
        g(3); // <----------------------------------- step out of
    }
}

如果你在这一点上进入 ,你将移动到f()println()行,进入函数调用。

如果你在这一点上跨过 ,你会转向f(1);g() ,逐行调用函数。

调试器的另一个有用功能是退出退出 。 在这种情况下,一个步骤返回将基本上运行你通过当前函数,直到你回到一个级别。 换句话说,它将逐步通过f(x)f(1) ,然后返回到调用函数以g(3);main()

Eclipse(至少是我目前唯一可以使用的Europa)使用F5 step intoF6用于step overF7用于step return







debugging