В чем разница между Step Into и Step Over в отладчике Eclipse? - PullRequest
172 голосов
/ 27 августа 2010

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

Ответы [ 5 ]

248 голосов
/ 27 августа 2010

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

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

Затмение (по крайней мере, Europa, единственное, что мне сейчас удобно) использует F5 для step into, F6 для step over и F7 для step return.

125 голосов
/ 27 августа 2010

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

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

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

Смотри также

19 голосов
/ 27 августа 2010

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

3 голосов
/ 27 августа 2010

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

1 голос
/ 08 июля 2014

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...