JDB: paso a paso

Este capítulo explica cómo utilizar el concepto de Stepping al depurar un programa. Stepping es la función del depurador que le permite ejecutar el código pasando línea por línea. Con esto, puede examinar cada línea del código para asegurarse de que se comportan según lo previsto.

Los siguientes comandos se utilizan en el proceso de creación de pasos:

  • paso: pasos a la siguiente línea de ejecución
  • lista: examina dónde se encuentra en el código
  • cont: continúa la ejecución restante

Ejemplo

El siguiente ejemplo usa la clase Add que hemos usado en el capítulo anterior:

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);
   }
}

Guarde el archivo anterior como Add.java. Compile este archivo usando el siguiente comando:

\>javac Add.java

Supongamos que el punto de interrupción se establece en el método main () de la clase Add. Los siguientes pasos muestran cómo aplicar el paso a paso en la clase Agregar.

Paso 1: ejecutar el trabajo

El siguiente comando comienza a ejecutar la clase llamada Agregar.

> run Add

Si ejecuta este comando, verá el siguiente resultado. En esta salida, puede encontrar que la ejecución se detiene en la posición del punto de interrupción, es decir, en el método main ().

La ejecución se detiene en la primera línea del método principal, es decir, en "int a = 5, b = 6;" o Línea no: 11 en el código. Puede observar esta información en la salida.

Paso 2: recorrer el código

El siguiente comando lleva la ejecución a la siguiente línea.

main[1] step

Ahora los pasos de ejecución a la línea no: 12. Puede ver el siguiente resultado.

Paso 3: enumere el código

El siguiente comando enumera el código:

main[1] list

Obtienes el siguiente resultado. El comando de lista se usa para hacerle saber la línea en el código hasta la cual ha llegado el control del programa. Observe la marca de flecha => en la siguiente captura de pantalla que muestra la posición actual del control del programa.

Paso 4: continuar con la ejecución

El siguiente comando continúa ejecutando el código:

main[1] cont

Este comando continúa ejecutando las líneas restantes del código. El resultado es como se muestra a continuación:

> Add:11
The application exited
\>

Generalmente, hay tres tipos de pasos:

  • Entrar en
  • Paso sobre
  • Salir

Entrar en

Con este comando, puede pasar a la siguiente línea del código. Si la siguiente línea del código es una llamada de función, entonces ingresa a la función manejando el control en la línea superior de la función.

En el siguiente código, la marca de flecha define el controlador en el código.

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);
   }
}

Si usa el step intocomando, el controlador se mueve a la siguiente línea, es decir, "int c = ob.addition (a, b);". En esta línea, hay una llamada de funciónaddition(int, int) por lo tanto, el controlador se mueve a la línea superior de la función de adición con la marca de flecha como se muestra a continuación:

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);
   }
}

Paso sobre

Step Over también ejecuta la siguiente línea. Pero si la siguiente línea es una llamada a función, ejecuta esa función en segundo plano y devuelve el resultado.

Tomemos un ejemplo. En el siguiente código, la marca de flecha define el control en el código.

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);
   }
}

Si usa el step overcomando, el control se mueve a la siguiente línea, es decir, "int c = ob.addition (a, b);". En esta línea, hay una función llamadaaddition(int, int) por lo tanto, la ejecución de la función se realiza en segundo plano y el resultado se devuelve a la línea actual con la marca de flecha como se muestra a continuación:

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);
   }
}

Salir

Step Out ejecuta la siguiente línea. Si la siguiente línea es una llamada de función, la omite y la ejecución de la función continúa con las líneas restantes del código.

Tomemos un ejemplo. En el siguiente código, la marca de flecha define el controlador en el código.

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);
   }
}

Si usa el step outcomando, el controlador se mueve a la siguiente línea, es decir, "int c = ob.addition (a, b);". En esta línea, hay una función llamadaaddition(int, int) por lo tanto, se omite la ejecución de la función y la ejecución restante continúa con la marca de flecha como se muestra a continuación:

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);
   }
}