[java] Eclipse 디버거에서 Step Into와 Step Over의 차이점은 무엇입니까?

Java 프로그램의 전체 흐름을 디버깅하고 싶습니다. 일식에서 F5(step into)와 F6(step over) 의 차이점은 무엇입니까 ?



답변

(로 표시 다음에 실행됩니다 라인, 현재 명령 포인터 다음과 같은 코드를 생각해 ->상기) f(x)라인 g()에 의해 호출 된, g(2)라인을 main():

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

당신이 단계 인 경우 그 시점에서, 당신은로 이동합니다 println()라인 f()함수 호출로 스테핑.

이 시점에서 단계를 넘어 가면의 f(1)행으로 이동 g()하여 함수 호출을 단계적으로 진행합니다.

디버거의 또 다른 유용한 기능은 스텝 아웃 또는 스텝 리턴입니다. 이 경우 스텝 리턴은 기본적으로 한 레벨 위로 올라갈 때까지 현재 기능을 통해 실행됩니다. 즉, 단계별 것 f(x)하고 f(1), 그 다음에 결국 호출 기능에게 백업 g(3)에서 main().

Eclipse (적어도 현재 유일하게 편리한 유일한 Europa)는 F5for step into, F6for step overF7for를 사용 step return합니다.


답변

코드 줄을 디버깅 할 때 일반적인 시나리오는 다음과 같습니다.

  • ( Step Into ) 메소드가 호출 될 예정이며 해당 메소드의 코드로 디버그하려고하므로 다음 단계는 해당 메소드로 이동하여 단계별 디버깅을 계속하는 것입니다.
  • ( Step Over ) 메소드가 호출 될 예정이지만이 특정 호출을 디버깅하는 데 관심이 없으므로 디버거가 해당 메소드를 전체 단계로 완전히 실행하기를 원합니다.
  • ( Step Return )이 메소드를 단계별로 디버깅 했으므로 디버거가 전체 메소드를 하나의 전체 단계로 리턴 할 때까지 전체 메소드를 실행하려고합니다.
  • ( 이력서 ) 디버거가 단계별이 아닌 “정상”실행을 재개하기를 원합니다.
  • ( 줄 바꿈 ) 어떻게 도착했는지는 신경 쓰지 않지만 실행이 특정 코드 줄에 도달하면 디버거가 일시적으로 실행을 일시 중지하여 수행 할 작업을 결정할 수 있습니다.

Eclipse에는 다른 고급 디버깅 기능이 있지만 이것이 기본 기본 사항입니다.

또한보십시오


답변

step into는 메소드 호출을 파고
step over는 라인을 실행하고 다음 라인으로 이동합니다.


답변

스텝 오버를 사용하여 방법의 세부 사항을 살펴볼 수 없습니다. 현재 줄을 건너 뛰려면 스텝 오버를 사용할 수 F6있으며 다음 줄로 이동하려면를 한 번만 누르면됩니다. 분석법에 문제가 있다고 생각 F5되면 세부 정보를 검토하십시오.


답변

Step Into 현재 선택된 행에서 실행될 다음 표현식이 호출되고 호출 된 메소드의 다음 실행 라인에서 실행이 일시 중단됩니다.

Step Over 현재 선택된 라인이 실행되고 다음 실행 라인에서 일시 중단됩니다.


답변