Qual è il nome corretto per eseguire il debug aggiungendo le istruzioni “print”

Ci sono molti modi per fare il debug, usando un debugger è uno, ma quello semplice per il programmatore umile e pigro è semplicemente aggiungere un po ‘di istruzioni di stampa al tuo codice.

vale a dire

def foo(x): print 'Hey wow, we got to foo!', x ... print 'foo is returning:', bar return bar 

Esiste un nome appropriato per questo stile di debug?

Sì, è noto come debug di printf() , che prende il nome dalla onnipresente funzione C:

Utilizzato per descrivere il lavoro di debug fatto inserendo comandi che generano informazioni di stato scelte più o meno attentamente nei punti chiave del stream del programma, osservando tali informazioni e deducendo ciò che è sbagliato sulla base di tali informazioni.

– printf () debugging @ everything2

Gli utenti nativi di altre lingue si riferiscono senza dubbio al comando predefinito print / log / or trace disponibile per la loro piattaforma di codifica scelta, ma ho sentito il nome “printf ()” usato per riferirsi a questa tecnica in molte altre lingue di C. Forse questo è dovuto alla sua storia: mentre BASIC e FORTRAN avevano comandi PRINT base ma funzionali, C generalmente richiedeva un po ‘più di lavoro per formattare vari tipi di dati: printf() era (e spesso lo è ancora) di gran lunga il più conveniente significa a tal fine, fornendo molte opzioni di formattazione integrate. Suo cugino, fprintf() , prende un altro parametro, il stream su cui scrivere: questo ha permesso a un “debugger” attento di indirizzare le informazioni diagnostiche allo stderr (eventualmente esso stesso reindirizzato a un file di log) lasciando l’output del programma non corrotto.

Sebbene spesso gli utenti del moderno software di debug non considerino il debug, il debugging di printf () continua a dimostrarsi indispensabile: il famigerato strumento FireBug per il browser Firefox (e strumenti simili ora disponibili per altri browser) è costruito attorno a una finestra della console in cui gli script di pagine Web possono registrare errori o messaggi diagnostici contenenti dati formattati.

L’ho sentito chiamare Caveman Debugging

Ho pensato che la seguente citazione sarebbe a proposito:

“Lo strumento di debug più efficace è ancora un pensiero attento, insieme a dichiarazioni di stampa giudicate giudiziose.”

  • Brian Kernighan, “Unix for Beginners” (1979)

Lo chiamo Tracing.

io ei miei compagni di squadra chiamandolo “Oldschool Debuging”.

Nello stesso senso della programmazione esplorativa , mi piace chiamarlo debugging esplorativo . Questo segue quando il debugger non è abbastanza potente per esaminare i tipi complessi nel programma, o invocare le funzioni di aiuto separatamente, o semplicemente non ne sai abbastanza su un bug per usare direttamente queste funzionalità.

Io chiamo questa programmazione “Ciao, mamma”.

Seduta dei pantaloni debugging 🙂

Quando sei su un sistema embedded, quando sei al limite e il linguaggio che stai codificando non ha ancora un debugger, quando il debugger si comporta in modo strano e vuoi ripristinare un po ‘di sanità mentale, e vuoi per capire come re-entrancy sta lavorando nel codice multi-thread, ….

Ho anche sentito il termine “MessageBox debugging” dal crowd di VB per riferirsi a questo “stile” di “debugging”.

I sistemi incorporati sono spesso l’unico metodo per strumentare il codice. Sfortunatamente la stampa richiede tempo ed influenza il stream in tempo reale del sistema. Quindi, strumentiamo anche tramite “tracing” dove le informazioni sullo stato del sistema (funzione entry exit ecc.) Vengono scritte su un buffer interno per essere scaricate e analizzate successivamente. I veri programmatori integrati possono eseguire il debug facendo lampeggiare un LED;)

Lo chiamerei semplicemente ” logging “.

Di solito mi riferisco a esso come tracciamento.

Si noti che in Visual Studio è ansible impostare punti di interruzione che aggiungono semplicemente traccia. Fare clic con il tasto destro del mouse su un punto di interruzione, selezionare “quando viene colpito …” e selezionare l’opzione “Stampa un messaggio”.

Inoltre, in .Net è ansible aggiungere istruzioni di debug (penso che sia in realtà Debug.WriteLine) per l’output sulla console. Queste statistiche sono incluse solo nelle build di debug: il compilatore le lascerà automaticamente fuori quando crei una build di rilascio.

Debug classico

Asserzioni manuali? Debugger Phobia?

debug dettagliato!

(Una buona registrazione è incredibilmente utile per il debug dei problemi durante l’esecuzione dei sistemi di produzione. Molte affermazioni inutili di stampa non sono, ma registrare qualcosa di interessante quando qualcosa di importante o imprevisto è incredibilmente importante.) Se l’unico modo per sapere come eseguire il debug dei problemi è con un debugger, ti troverai in una situazione abbastanza difficile quando il servizio che hai creato è rotto per alcuni dei tuoi utenti ma non puoi riprodurre il problema localmente.)

L’ho sempre saputo con il termine “debugging rapido e sporco”, o semplicemente “dirty debugging” in breve.

Ho sentito usare ” Gutenberg debugging “, in onore del ragazzo che ha inventato la macchina da stampa .