Di solito non uso un debugger, forse una volta ogni due settimane, ma non è la prima cosa a cui vado.
Lo strumento più importante nel mio lavoro è così onnipresente che mi sono quasi dimenticato di menzionarlo: impilare le tracce. Oltre il 90% dei problemi riscontrati può essere risolto esaminando una traccia dello stack. Questo strumento non è sempre molto utile a seconda della tua lingua, ma quando sono implementati bene da una lingua possono farti risparmiare una quantità incredibile di tempo.
Immagino che il secondo modo più comune in cui rilevo problemi semplici sia che è probabilmente il codice che ho appena cambiato. Eseguo test di unità abbastanza spesso, quindi generalmente so cosa ho appena rotto.
Per uno sviluppo e un debug più complessi potrei aggiungere alcune istruzioni di log a livello di debug o di traccia. Considero i problemi di sviluppo una buona guida per aiutarmi a collocare le informazioni di tracciabilità / debug della registrazione della produzione, il che mi porta a:
Non hai sempre a portata di mano un debugger. In produzione potrebbe essere impossibile eseguire un debugger (diamine, potrebbe essere impossibile accedere alle macchine di produzione ad eccezione dei registri a seconda della sicurezza dell'azienda). Ci sono anche lingue in cui il collegamento di un debugger richiede troppo tempo o forse non sono disponibili buoni debugger.
Se hai sempre codificato usando la logica e la registrazione a livello di debug / traccia, può essere semplicemente il caso di esaminare le tue eccellenti dichiarazioni di registro (eventualmente aumentando il livello di registro) per capire il problema senza nemmeno accedere all'hardware.
Anche se penso che i debugger siano uno strumento potente, non lasciarli essere l'unico strumento nella tua cassetta degli attrezzi!