Учебники

JDB — Степпинг

В этой главе объясняется, как использовать концепцию 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 ().

Stepping1

Выполнение останавливается на первой строке основного метода, то есть на «int a = 5, b = 6;» или строка №: 11 в коде. Вы можете наблюдать эту информацию в выводе.

Шаг 2: Шаг через Кодекс

Следующая команда переводит выполнение на следующую строку.

main[1] step

Теперь выполнение переходит к строке №: 12. Вы видите следующий вывод.

Stepping2

Шаг 3: перечислите код

Следующая команда перечисляет код:

main[1] list

Вы получите следующий вывод. Команда List используется, чтобы сообщить вам строку в коде, до которой дошло управление программой. Обратите внимание на знак стрелки => на следующем снимке экрана, который показывает текущую позицию программного управления.

Stepping3

Шаг 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), поэтому выполнение функции пропускается, а оставшееся выполнение продолжается со знаком стрелки, как показано ниже: