Il problema con il debug di println è che le stesse stampanti sono un problema.
Quando esegui il debug utilizzando println
, devi modificare il codice per farlo. Ciò significa che devi già sapere, o almeno avere una buona idea, dove si trova il bug prima di iniziare il debug. E se già lo sapete, probabilmente non avrete bisogno di eseguire il debug comunque, poiché (almeno per IME) il motivo principale per il debug è trovare dove si trova un bug, non capire come risolverlo. Una volta che il bug è stato bloccato, la soluzione è solitamente ovvia solo dal contesto. (Non sempre, ovviamente, ma di solito.)
Se la tua diagnostica di stampa non si rivela utile per fornirti informazioni utili o non ti fornisce informazioni utili sufficienti , devi chiudere il programma, cambiare il codice, ricompilare e poi tornare a il punto in cui eri a riprodurre il bug.
Una volta che hai finito di trovare e correggere il bug, devi quindi cambiare di nuovo il codice per rimuovere le istruzioni println. (Speriamo che non ne manchi e poi spedisci il prodotto con l'output di debug rimasto!)
Un debugger interattivo non ha questi problemi. Non hai bisogno di sapere cosa stai cercando in anticipo; puoi esaminare i valori di qualsiasi variabile arbitraria in qualsiasi momento nel suo ambito. Non è necessario modificare il codice, perché il debugger è esterno al programma. E quindi non è necessario interrompere il debug, modificare il codice e ricompilare per cercare qualcosa di nuovo.
Solo questo principio - ispezionare il codice dall'esterno invece di doverlo strumentare manualmente (e quindi non-strumentarlo) - è la ragione per cui i debugger interattivi sono diventati il metodo preferito di debugging tra i programmatori moderni.