Qual è la differenza tra gcc -ggdb e gcc -g


91

Quando uso gcc per compilare programmi C, di solito uso -gper ottenere alcune informazioni di debug nel file elf in modo che gdb possa aiutarmi se necessario.

Tuttavia, ho notato che alcuni programmi usano -ggdb, dato che dovrebbe rendere le informazioni di debug più amichevoli con gdb.

Come si differenziano e quale si consiglia di utilizzare?


Nota: un collegamento alle opzioni per il debug del programma o GCC, http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options

Risposte:


39

È possibile che non ci siano differenze: dipende dal formato nativo del sistema operativo e da quanto si desidera che siano portatili le informazioni di debug. Vedere Opzioni di debug del manuale di GCC .


Potresti considerare di collegare la corrente in questo modo?
1737973

63

-ge -ggdbsono simili con alcune lievi differenze, ho letto questo qui :

-g produce informazioni di debug nel formato nativo del sistema operativo (stabs, COFF, XCOFF o DWARF 2).

-ggdb produce informazioni di debug specificatamente destinate a gdb.

-ggdb3 produce informazioni di debug aggiuntive, ad esempio: incluse le definizioni di macro.

-ggdbda solo senza specificare il livello predefinito su -ggdb2(cioè, gdb per il livello 2).


12

Ho almeno un esempio in cui -ggdb ha funzionato meglio per me rispetto a un'altra opzione di debug che stavamo usando:

Nota: questo accade solo su box x86-64 e scompare quando viene compilato con -ggdb. Ma le versioni più recenti del debugger funzionano anche con -gstabs +


7

Una cosa è che "-g" è portabile (ad esempio nei Makefile destinati ad essere eseguiti su piattaforme non GNU). Recentemente ho avuto un problema di portabilità riguardo a -g vs. -ggdb su una macchina AIX, ecco perché ne parlo.

Non ho idea di cosa aggiunga -ggdb all'usabilità, però.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.