JDB - Introducción

La depuración es un procedimiento técnico para encontrar y eliminar errores o defectos en un programa y obtener los resultados esperados. La depuración incluye pruebas y monitoreo. Es muy complejo cuando las subunidades de un programa están estrechamente acopladas. Podemos depurar un programa utilizando las herramientas de depuración que siguen las API prescritas. Un depurador le permite revisar cada aspecto de un código, inspeccionar todos los elementos y eliminar errores, si los hubiera.

Técnicas de depuración

Existen diferentes tipos de técnicas para depurar un programa Java. El antiguo método de depuración es mediante el uso de declaraciones de impresión al final de cada segmento que imprimirá las declaraciones de seguimiento en la consola. Eche un vistazo al siguiente código.

pubic class Add
{
   public static void main(String ar[])
   {
      int a = ar[0];
      system.out.println("A : " + a);
      
      int b = ar[1];
      system.out.println("B : " + b);
      
      int c = a + b;
      system.out.println("C = a + b : " + c);
   }
}

Aquí, tenemos un programa que suma dos números e imprime la salida. Observe que en cada paso, hemos introducido una declaración de impresión que imprime el estado del programa en la consola. Este es el enfoque tradicional para depurar un programa.

Además, contamos con conceptos avanzados que se pueden utilizar para depurar un programa como:

  • stepping
  • puntos de interrupción, y
  • excepciones o puntos de observación.

Tipos de depuración

Podemos depurar un programa usando varios métodos:

  • Usando código de bytes Java (versión compilada del código Java)
  • Usar comentarios dentro de los programas
  • Adjuntar clase a un programa en ejecución
  • Depuración remota
  • Depuración bajo demanda
  • Depuración de código optimizada

Depuradores de Java

A continuación, se muestran algunos ejemplos de depuradores de Java disponibles en el mercado:

  • Los IDE como Eclipse, Netbeans, etc. contienen sus propios depuradores (Visual cafe, Borland, JBuilder)
  • GUI de depurador independiente (como Jikes, depurador de plataforma Java y JProbe)
  • Depurador de línea de comandos (JDB de Sun)
  • Bloc de notas o VI impulsado (seguimiento de pila)

Este tutorial cubre cómo usar el depurador de línea de comandos, jdb.

JDB

El depurador de Java (JDB) es una herramienta para que las clases de Java depuren un programa en la línea de comandos. Implementa la arquitectura del depurador de la plataforma Java. Ayuda a detectar y corregir errores en un programa Java usando la Interfaz de depuración Java (JDI).

JDB en JDK

La siguiente arquitectura define el rol de JDB en JDK. Contiene principalmente tres unidades:

  • Interfaz Java Virtual Machine Tool (JVM TI)
  • Grupo de cableado de depuración de Java (JDWP)
  • Interfaz de depurador de Java (JDI)

JVM TI

Es una interfaz de programación nativa implementada por VM. Proporciona formas de inspeccionar y depurar el estado de la aplicación que se ejecuta en la máquina virtual. Permite un implementador (VM Implementer) que se puede incluir fácilmente en la arquitectura de depuración. También utiliza un canal de terceros llamadoJDWP para comunicarse.

JDWP

Define el formato de la información y las solicitudes que pasan entre el proceso de depuración y la interfaz del depurador. El propósito principal de tener un JDWP es permitir que el depurador y el depurador se comuniquen cuando se ejecutan en máquinas virtuales separadas o en plataformas separadas.

JDI

Es una interfaz Java de alto nivel implementada como front-end. Define la información variable a nivel de código de usuario. Se recomienda utilizar una capa JDI para todo el desarrollo de depuradores. Utiliza JDWP para comunicarse con la JVM depurada.