В этой главе объясняется, как использовать концепцию Stepping при отладке программы. Степпинг — это функция отладчика, которая позволяет выполнять код, шаг за шагом пропуская код. Используя это, вы можете проверить каждую строку кода, чтобы убедиться, что они ведут себя так, как задумано.
В пошаговом процессе используются следующие команды:
- шаг: шаги к следующей строке исполнения
- список: проверяет, где вы находитесь в коде
- продолжение: продолжает оставшееся выполнение
пример
В следующем примере используется класс Add, который мы использовали в предыдущей главе:
public class Add { public int addition( int x, int y) { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; Add ob = new Add(); int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Сохраните вышеуказанный файл как Add.java. Скомпилируйте этот файл, используя следующую команду:
\>javac Add.java
Предположим, что точка останова установлена в методе main () класса Add. Следующие шаги показывают, как применить степпинг в классе Add.
Шаг 1: Выполнить задание
Следующая команда начинает выполнение класса с именем Add.
> run Add
Если вы выполните эту команду, вы увидите следующий вывод. В этом выводе вы можете обнаружить, что выполнение останавливается в точке останова, т. Е. В методе main ().
Выполнение останавливается на первой строке основного метода, то есть на «int a = 5, b = 6;» или строка №: 11 в коде. Вы можете наблюдать эту информацию в выводе.
Шаг 2: Шаг через Кодекс
Следующая команда переводит выполнение на следующую строку.
main[1] step
Теперь выполнение переходит к строке №: 12. Вы видите следующий вывод.
Шаг 3: перечислите код
Следующая команда перечисляет код:
main[1] list
Вы получите следующий вывод. Команда List используется, чтобы сообщить вам строку в коде, до которой дошло управление программой. Обратите внимание на знак стрелки => на следующем снимке экрана, который показывает текущую позицию программного управления.
Шаг 4: Продолжить выполнение
Следующая команда продолжает выполнять код:
main[1] cont
Эта команда продолжает выполнение оставшихся строк кода. Вывод как показано ниже:
> Add:11 The application exited \>
Как правило, существует три типа степпинга:
- Шаг в
- Переступить
- Выйти
Шаг в
Используя эту команду, вы можете перейти к следующей строке кода. Если следующая строка кода является вызовом функции, то она входит в функцию, управляя элементом управления в верхней строке функции.
В следующем коде знак стрелки определяет контроллер в коде.
public class Add { public int addition( int x, int y) { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; -> Add ob = new Add(); int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Если вы используете команду step into , контроллер переходит к следующей строке, то есть «int c = ob.addition (a, b);». В этой строке есть добавление вызова функции (int, int), следовательно, контроллер перемещается к самой верхней строке функции добавления со стрелкой, как показано ниже:
public class Add { public int addition( int x, int y) -> { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; Add ob = new Add(); int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Переступить
Step Over также выполняет следующую строку. Но если следующая строка является вызовом функции, она выполняет эту функцию в фоновом режиме и возвращает результат.
Давайте возьмем пример. В следующем коде знак стрелки определяет элемент управления в коде.
public class Add { public int addition( int x, int y) { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; -> Add ob = new Add(); int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Если вы используете команду step over , элемент управления переходит на следующую строку, т. Е. «Int c = ob.addition (a, b);». В этой строке добавляется вызов функции (int, int), поэтому выполнение функции выполняется в фоновом режиме, а результат возвращается в текущую строку с меткой стрелки, как показано ниже:
public class Add { public int addition( int x, int y) { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; Add ob = new Add(); -> int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Выйти
Step Out выполняет следующую строку. Если следующая строка является вызовом функции, она пропускает это, и выполнение функции продолжается с оставшимися строками кода.
Давайте возьмем пример. В следующем коде знак стрелки определяет контроллер в коде.
public class Add { public int addition( int x, int y) { int z = x + y; return z; } public static void main( String ar[ ] ) { int a = 5, b = 6; -> Add ob = new Add(); int c = ob.addition(a,b); System.out.println("Add: " + c); } }
Если вы используете команду step out , контроллер переходит на следующую строку, то есть «int c = ob.addition (a, b);». В этой строке добавляется вызов функции (int, int), поэтому выполнение функции пропускается, а оставшееся выполнение продолжается со знаком стрелки, как показано ниже: