Il JDT include un debugger che consente di rilevare e individuare errori presenti nei programmi in esecuzione localmente o in remoto.
Il debugger consente di controllare l'esecuzione del programma impostando punti di interruzione, sospendendo gli avvii, analizzando il codice ed esaminando il contenuto delle variabili.
Il debugger presenta una struttura client/server in modo da consentire il debug di programmi in esecuzione remota su altri sistemi della rete o di programmi in esecuzione localmente sulla propria workstation. Il server del debugger viene eseguito sullo stesso sistema in cui si trova il programma da sottoporre a debug, cioè la workstation (debug locale) o un sistema accessibile tramite una rete (debug remoto).
I punti di interruzione sono indicatori temporanei inseriti nel programma per comunicare al debugger di interrompere l'esecuzione a un determinato punto. Quando il workbench esegue un programma e rileva un punto di interruzione, l'esecuzione viene sospesa. Il thread corrispondente viene sospeso (cioè, l'esecuzione viene temporaneamente interrotta) in modo che sia possibile visualizzare lo stack relativo al thread.
L'esecuzione viene sospesa al punto di interruzione prima dell'esecuzione dell'istruzione. In questo modo è possibile controllare il contenuto delle variabili e lo stack. Quindi, è possibile procedere attraverso le istruzioni, analizzare altri metodi o classi, continuare l'esecuzione fino al successivo punto di interruzione oppure continuare l'esecuzione fino al raggiungimento della conclusione del programma.
È possibile disabilitare un punto di interruzione in modo che non sospenda l'esecuzione e, successivamente, riabilitarlo.
Il debug in remoto consente di eseguire un'applicazione su un sistema ed effettuare il debug della stessa applicazione su un altro sistema. Il sistema locale esegue il debugger, mentre il sistema remoto esegue il motore di debug e il programma.
Il requisito principale per il debug in remoto consiste nella possibilità di accedere a computer remoti sui quali si trovano i file da sottoporre a debug. Durante il debug di un programma in remoto, un daemon del motore di debug inizia la ricerca di una connessione. Una volta stabilita una connessione, è possibile iniziare il debug del programma.
Il debug remoto può dimostrarsi utile in diverse situazioni, ad esempio: