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

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

177
задан mtb 27 June 2016 в 11:22
поделиться

4 ответа

Рассмотрите следующий код с текущим указателем инструкции (строка, которая будет выполняться следующей) в 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(), перешагнув через вызов функции.

Еще одной полезной функцией отладчиков является шаг out of или шаг return. В этом случае пошаговый возврат в основном проведет вас через текущую функцию, пока вы не вернетесь на один уровень вверх. Другими словами, он пройдет через f(x) и f(1), затем вернется к вызывающей функции, чтобы закончить в g(3); в main().

Eclipse (по крайней мере, Европа, единственная, которая у меня сейчас под рукой) использует F5 для шага в , F6 для шаг и F7 для шаг возврата .

255
ответ дан 23 November 2019 в 20:19
поделиться

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

3
ответ дан 23 November 2019 в 20:19
поделиться

Обычные сценарии при отладке строк кода:

  • (Шаг внутрь) Будет вызван метод, и вы хотите выполнить отладку кода этого метода, поэтому следующий шаг — перейти к этому методу и продолжить пошаговую отладку.
  • (Шаг через ) Метод вот-вот будет запущен, но вы не заинтересованы в отладке этого конкретного вызова, поэтому вы хотите, чтобы отладчик полностью выполнил этот метод как один шаг.
  • (Возврат шага) Вы завершили пошаговую отладку этого метода и хотите, чтобы отладчик выполнял весь метод до тех пор, пока он не вернется как один полный шаг.
  • (Resume) Вы хотите, чтобы отладчик возобновил «нормальное» выполнение вместо пошагового
  • (Точка прерывания строки) Вам все равно, как оно получилось там, но если выполнение достигает определенной строки кода, вы хотите, чтобы отладчик временно приостановил выполнение там, чтобы вы могли решить, что делать.

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

См. также

126
ответ дан 23 November 2019 в 20:19
поделиться

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

20
ответ дан 23 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: