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