Esegui il programma C in modalità di debug (senza debugger)

-1

Se voglio che il mio programma sia in grado di funzionare in modalità di debug, è una buona idea far sì che accetti un flag come -D=DEBUG quando eseguo il programma? Al momento ho una variabile DEBUG in un file .h ma non riesco a cambiare dopo la compilazione.

#define DEBUG false

Mi piacerebbe essere in grado di eseguire il mio programma sia in modalità di debug che in modalità "stabile". I getops sono una buona opzione per farlo poiché utilizzo già getops per accettare gli argomenti ./a.out --help e ./a.out --version ?

    
posta Niklas Rosencrantz 30.04.2016 - 12:28
fonte

2 risposte

5

È meglio fare una chiara distinzione tra la modalità "compila tempo debug" (che è ciò che controlli per #define DEBUG ) e specifiche "funzioni di debug" che dovrebbero essere disponibili anche quando compili con #define DEBUG false , e potrebbe essere abilitato o disabilitato in fase di esecuzione. Meglio chiamare quest'ultimo in modo diverso, nome le caratteristiche (come "modalità di registrazione", "modalità di convalida" ecc.) E fornire per loro diversi flag a riga di comando.

Questo ti dà l'opportunità di abilitare queste funzionalità anche quando hai distribuito il programma in un ambiente di produzione, dove potresti non essere in grado di utilizzare un debugger.

    
risposta data 30.04.2016 - 12:58
fonte
4

L'intero punto di compilazione in "modalità di debug" è che include i simboli di debug nell'eseguibile per abilitare l'uso di un debugger, a costo di rinunciare ad alcune ottimizzazioni delle prestazioni che non sono possibili con i simboli di debug. Se non hai intenzione di eseguire quell'eseguibile in un debugger, allora "essere in modalità di debug" non ti guadagna nulla.

È probabile che tu stia confondendo la modalità di debug (che è qualcosa che fai in fase di compilazione) con altre funzionalità che sono effettivamente utili da avere in un binario di rilascio, come un flag -v (passato dall'utente in fase di runtime ) per aumentare la verbosità negli strumenti della riga di comando o una modalità diagnostica nei videogiochi (attivata dall'utente durante l'esecuzione) per aiutare i giocatori a identificare le fonti di ritardo sul loro server. Se questi devono essere argomenti della riga di comando o qualcos'altro dipende dall'applicazione.

    
risposta data 30.04.2016 - 13:01
fonte

Leggi altre domande sui tag