2012-03-20 4 views

risposta

9

È possibile provare a compilare con g3, come descritto here.

gcc -gdwarf-2 -g3 

passiamo le bandiere -gdwarf-2 e -g3 per garantire il compilatore include informazioni sulle macro preprocessore nelle informazioni di debug.

Oppure provare -ggdb.

+0

'-ggdb' non ha effetto. Vedi [Interpretazione dell'oggetto che causa un arresto anomalo in __cxa_finalize] (https://sourceware.org/ml/gdb/2011-08/msg00109.html) (Sono abbastanza sicuro che Jan è uno degli sviluppatori di GDB). – jww

3

I simboli #define non sono in genere inclusi come parte delle informazioni di debug. Le variabili const (o inline functions for function-like macros) sono in genere un'idea migliore e per più motivi di questo (ad es. Ambito, sicurezza del tipo, più valutazioni, ecc.). Consiglio di usarli a favore dei simboli del preprocessore ogni volta che puoi.

+0

@EmployedRussian: Modificato. –

+0

+1 per favorire 'const', anche se non li chiamerei" variabili 'const'";) – 0xC0000022L

+0

La tua risposta assume ancora un solo tipo di '# define', ovvero uno che definisce una costante. Molti altri sono possibili, ad es. '#define min (a, b) ((a) <(b))? (a): (b) '. –

Problemi correlati