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

Jav*_*ser 178 java eclipse debugging

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

pax*_*blo 255

请考虑以下代码,其中包含当前指令指针(将在下->一行执行的行),该行f(x)已被以下g()行中的行调用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); //
        f(1); // <----------------------------------- STEP OVER
    }

    public static void main (String args[]) {
        g(2);
        g(3); // <----------------------------------- STEP OUT OF
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你要进入那一点,你将进入该main()println(),进入函数调用.

如果你在这一点上跳过,你将移动到该f()f(1),踩过函数调用.

调试器的另一个有用功能是退出退回.在这种情况下,步骤返回将基本上引导您完成当前函数,直到您返回一个级别.换句话说,它会逐步完成g()f(x),然后再返回到调用函数在结束了f(1)g(3).

Eclipse(至少是Europa,这是我目前唯一使用的那个)用于F5for main(),F6for step intoF7for step over.


pol*_*nts 126

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

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

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

也可以看看


Jea*_*rin 20

步入将深入研究方法调用
步骤将只执行该行并转到下一行


Dea*_*n P 14

与调试器通信的方法

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

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

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

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

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

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

在此输入图像描述


wan*_*ana 5

您无法通过使用 step over 来查看方法的详细信息。如果你想跳过当前行,你可以使用step over,那么你只需要按F6一次就可以移动到下一行。如果您认为方法中存在错误,请使用F5来检查细节。