it-swarm.com.ru

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

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

170
JavaUser

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

247
paxdiablo

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

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

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

Смотрите также

124
polygenelubricants

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

19
Jean-Bernard Pellerin

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

3
wanana

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

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

1
shiva