Eclipse调试器中Step Into和Step Over有什么区别?

时间:2010-08-27 01:27:09

标签: java eclipse debugging

我想调试Java程序的整个流程。 eclipse中 F5 (步入)和 F6 (跳过)有什么区别?

6 个答案:

答案 0 :(得分:247)

考虑以下代码,使用f(x);g()行的当前指令指针(下一步将执行的行),g(2)行调用main() 1}}:

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
    }
}

如果您此时要将加入,您将转到println()中的f()行,进入函数调用。

如果您此时步骤 ,您将转到f(1);中的g()行,逐步调用函数调用。

调试器的另一个有用功能是步骤 out 或step return 。在这种情况下,步骤返回将基本上引导您完成当前函数,直到您返回一个级别。换句话说,它将逐步执行f(x)f(1),然后返回到调用函数,最终位于g(3);中的main()

Eclipse(至少是Europa,这是我目前唯一得到的方便)对step into使用 F5 ,对{{1}使用 F6 step over F7

答案 1 :(得分:124)

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

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

Eclipse具有其他高级调试功能,但这些是基本的基础知识。

另见

答案 2 :(得分:19)

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

答案 3 :(得分:3)

您无法通过使用步骤查看方法的详细信息。 如果要跳过当前行,可以使用跳过,然后只需按 F6 一次即可移动到下一行。 如果您认为方法中存在某些错误,请使用 F5 检查详细信息。

答案 4 :(得分:1)

Step Into 调用当前所选行的下一个表达式,并在执行的方法中的下一个可执行行暂停执行。

跳过执行当前选定的行并暂停到下一个可执行行。

答案 5 :(得分:0)

与调试器通信的方法

(或者,我如何向祖母解释我的公路旅行)

Step Into:“当要执行的下一条语句到达方法调用时,不要将方法作为一个整体执行,而是执行该方法的第一行并停止”

Step Over:“当下一个要执行的语句到达方法调用时,将方法作为一个整体执行并停止”

Step Out:“结束执行被调用者的代码并在执行返回到调用者时停止”

继续:“执行直到下一个断点”

这是一个很好的例子,可以实际演示上述概念:

enter image description here