JDB - Introduzione

Il debug è una procedura tecnica per trovare e rimuovere bug o difetti in un programma e ottenere i risultati attesi. Il debug include test e monitoraggio. È molto complesso quando le subunità di un programma sono strettamente accoppiate. Possiamo eseguire il debug di un programma utilizzando gli strumenti del debugger che seguono le API prescritte. Un debugger ti consente di esaminare ogni aspetto di un codice, ispezionare tutti gli elementi e rimuovere eventuali errori.

Tecniche di debug

Esistono diversi tipi di tecniche per eseguire il debug di un programma Java. Il vecchio metodo di debug consiste nell'usare le istruzioni print alla fine di ogni segmento che stamperanno le istruzioni trace sulla console. Dai un'occhiata al seguente codice.

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

Qui abbiamo un programma che aggiunge due numeri e stampa l'output. Si noti che ad ogni passaggio abbiamo introdotto un'istruzione print che stampa lo stato del programma sulla console. Questo è l'approccio tradizionale per eseguire il debug di un programma.

Inoltre, abbiamo concetti avanzati che possono essere utilizzati per eseguire il debug di un programma come:

  • stepping
  • punti di interruzione e
  • eccezioni o punti di controllo.

Tipi di debug

Possiamo eseguire il debug di un programma utilizzando vari metodi:

  • Utilizzo del bytecode Java (versione compilata del codice Java)
  • Utilizzo dei commenti all'interno dei programmi
  • Collegamento di una classe a un programma in esecuzione
  • Debug remoto
  • Debug su richiesta
  • Debug del codice ottimizzato

Debugger Java

Di seguito sono riportati alcuni esempi di debugger Java disponibili sul mercato:

  • IDE come Eclipse, Netbeans, ecc. Contengono i propri debugger (Visual cafe, Borland, JBuilder)
  • GUI del debugger autonomo (come Jikes, debugger della piattaforma Java e JProbe)
  • Debugger della riga di comando (JDB di Sun)
  • Blocco note o VI guidato (traccia dello stack)

Questo tutorial spiega come utilizzare il debugger della riga di comando, jdb.

JDB

Il debugger Java (JDB) è uno strumento per le classi Java per eseguire il debug di un programma nella riga di comando. Implementa l'architettura del debugger della piattaforma Java. Aiuta a rilevare e correggere i bug in un programma Java utilizzando Java Debug Interface (JDI).

JDB in JDK

La seguente architettura definisce il ruolo di JDB in JDK. Contiene principalmente tre unità:

  • Interfaccia Java Virtual Machine Tool (JVM TI)
  • Java Debug Wiring Pool (JDWP)
  • Java Debugger Interface (JDI)

JVM TI

È un'interfaccia di programmazione nativa implementata da VM. Fornisce modi per ispezionare ed eseguire il debug dello stato dell'applicazione in esecuzione sulla VM. Consente a un implementatore (VM Implementer) che può essere facilmente incluso nell'architettura di debug. Utilizza anche un canale di terze parti chiamatoJDWP per la comunicazione.

JDWP

Definisce il formato delle informazioni e le richieste che passano tra il processo del debugger e il front-end del debugger. Lo scopo principale di avere un JDWP è consentire al debuggee e al debugger di comunicare quando vengono eseguiti su VM separate o su piattaforme separate.

JDI

È un'interfaccia Java di alto livello implementata come front-end. Definisce le informazioni sulla variabile a livello di codice utente. Si consiglia di utilizzare un livello JDI per tutto lo sviluppo del debugger. Utilizza JDWP per la comunicazione con la JVM oggetto del debug.