В чем разница между Step Into и Step Over в отладчике Eclipse?

Я хочу отладить весь поток Java-программы. В чем разница между F5 (шаг в) и F6 (шаг за шагом) в eclipse?

Ответ 1

Рассмотрим следующий код с вашим текущим указателем инструкции (строка, которая будет выполнена следующая) в строке 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); // <----------------------------------- current location
        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, единственная, на мой взгляд, в данный момент) использует F5 для step into, F6 для step over и F7 для step return.

Ответ 2

При отладке строк кода, это обычные сценарии:

  • (шаг за шагом) Вызывается метод, который вы хотите отлаживать в коде этого метода, поэтому следующий шаг - перейти к этому методу и продолжить отладку поэтапно.
  • (Step Over) Вызывается метод, но вы не хотите отлаживать этот конкретный вызов, поэтому вы хотите, чтобы отладчик полностью выполнил этот метод как один шаг.
  • (Step Return) Вы поэтапно отлаживаете этот метод, и вы просто хотите, чтобы отладчик выполнял весь метод до тех пор, пока он не вернется как один шаг.
  • (Resume) Вы хотите, чтобы отладчик возобновил "нормальное" выполнение вместо пошагового
  • (Line Breakpoint) Вам все равно, как это получилось, но если выполнение достигает определенной строки кода, вы хотите, чтобы отладчик временно приостановил выполнение там, чтобы вы могли решить, что делать.

Eclipse имеет другие усовершенствованные функции отладки, но это основные основы.

См. также

Ответ 3

шаг в будет копать в вызовы методов
step over просто выполнит линию и перейдет к следующей

Ответ 4

Вы не можете просмотреть детали метода, используя шаг. Если вы хотите пропустить текущую строку, вы можете использовать переключение, тогда вам нужно всего лишь нажать F6 только один раз, чтобы перейти к следующей строке. И если вы считаете, что что-то неправильно в этом методе, используйте F5 для просмотра деталей.

Ответ 5

Шаг в Вызывается следующее выражение в текущей выбранной строке, и выполнение приостанавливается в следующей исполняемой строке в вызываемом методе.

Step Over Текущая выбранная строка выполняется и приостанавливается на следующей исполняемой строке.