Il debugging e la ricerca di un bug non sono molto intercambiabili.
Il debugging sta attraversando il tuo codice (usando un debugger, eseguendolo durante la stampa di materiale interno, rivedendo il codice ecc.) cercando di trovare la parte del tuo codice che non fa ciò che intendevi fare.
La ricerca è necessaria quando trovi un problema in una "scatola nera" - una parte del codice che non puoi sondare, sia perché fa parte della lingua, o non hai accesso al suo codice sorgente, o semplicemente manchi l'esperienza / conoscenza / tempo per sondare il codice sorgente da solo. Quando assegni a quell'input della scatola nera che ritieni sia corretto e ti fornisce output o effetti collaterali errati, significa che non lo usi correttamente o che ci sia un bug nel componente stesso. In ogni caso, devi cercarlo per risolverlo.
Il debugging non può essere sostituito con la ricerca. I problemi che richiedono il debug di solito sono problemi specifici del tuo codice. Se la tua funzione restituisce 2
invece di 3
, non puoi reindirizzare il bug perché anche se trovi qualcun altro la cui funzione restituisce 2
anziché 3
, probabilmente sarà per motivi diversi. Anche se il tuo bug cade in uno schema più ampio che puoi ricercare, dovrai spesso eseguire prima il debug per trovare il pattern che e, facendo ciò, probabilmente hai già risolto il bug .
La ricerca non può essere sostituita con il debug. Se trovi una scatola nera del genere, non ti limiterai a inserirla casualmente fino a quando non riuscirai a farlo funzionare. Dal momento che il problema è con qualcosa di esterno, puoi effettivamente cercarlo. Se una funzione dalla libreria esterna restituisce 2
invece di 3
, e trovi qualcun altro su Internet che ha lo stesso problema, probabilmente è dello stesso motivo, dal momento che entrambi usi la stessa funzione.
Il debugging e la ricerca di un bug non sono molto intercambiabili. Quale approccio dovresti prendere (a volte avrai bisogno di entrambi!) Dipende dal bug in questione, non da una regola generale decisa in anticipo.