Utilizzo delle opzioni -g e -O2 in gcc

Qualcuno ha esperienza di mixare -g (simboli di debugging) e -O2 (migliore ottimizzazione sicura) con il compilatore gcc?
Devo eseguire il debug degli arresti anomali di un programma di rilascio distribuito agli utenti finali che potrebbero inviarmi il file principale.
Ho sempre usato per chiamare:

gdb <> <>

e vedere dove si trova il problema. Ora posso solo vedere la traccia di chiamata ma senza simboli di debug sono abbastanza nei guai.

Qualche idea?

Usiamo entrambi insieme nell’ambiente di produzione, il che rende molto più facile il debug se il cliente ha visto un incidente solo una volta. Ti dà una buona idea di dove sia il problema (non se si trattasse di un danneggiamento della memoria).

In teoria l’aggiunta di -g non dovrebbe davvero influire sulle prestazioni, sebbene l’eseguibile diventi grande. Nell’ambiente embedded è un grande compromesso.

Funziona bene.

O, a causa dell’ottimizzazione, a volte la sorgente che stai passando con il debugger non corrisponde esattamente alla fonte, ma IMHO nonostante abbia i simboli di debug rende il debug molto più facile.