Ho visto post parlare di cosa potrebbe fare causa le differenze di tra le versioni di debug e release, ma non penso che nessuno abbia affrontato da un punto di vista dello sviluppo quale sia il modo più efficiente per risolvere il problema.Migliori pratiche e strumenti per il debug delle differenze tra le build di debug e release?
La prima cosa che faccio quando compare un bug nella versione Release ma non in Debug è che eseguo il mio programma attraverso valgrind nella speranza di una migliore analisi. Se questo non rivela nulla, e questo mi è successo prima, provo vari input nella speranza di far emergere il bug anche nella build di Debug. Se fallisce, allora proverei a tenere traccia delle modifiche per trovare la versione più recente per cui le due build divergono nel comportamento. E alla fine credo che ricorrere alle dichiarazioni di stampa.
Esistono migliori pratiche di ingegneria del software per il debug in modo efficiente quando le versioni di Debug e Release differiscono? Inoltre, quali strumenti ci sono che operano a un livello più fondamentale di valgrind per aiutare a eseguire il debug di questi casi?
EDIT: Ho notato molte risposte che suggeriscono alcune buone pratiche generali come test di unità e test di regressione, che sono d'accordo per trovare bug. Tuttavia, c'è qualcosa di specifico su misura per questo problema di Release vs. Debug? Ad esempio, esiste una cosa come uno strumento di analisi statico che dice "Ehi, questa macro o questo codice o questa pratica di programmazione è pericolosa perché ha il potenziale per causare differenze tra i build di Debug/Release?"
Con VC, è possibile creare build di rilascio con informazioni di debug ed eseguire il debug di questi. Non c'è alcun vero divertimento nel passare attraverso il codice ottimizzato, ma hai una buona probabilità di trovare bug in questo modo. – sbi
Esatto, dimentico che è possibile compilare le informazioni di debug anche nella versione di rilascio con gcc. – Eric