Lors de la compilation du code source C avec gcc ou Clang, j'utilise toujours l' -g
indicateur pour générer des informations de débogage pour gdb.
gcc -g -o helloworld helloworld.c
J'ai remarqué que certaines personnes recommandent à la -g3
place. Quelle est la différence entre les indicateurs -g
et -g3
? Y a-t-il également une différence entre -g
et -ggdb
?
Réponses:
À partir de la documentation :
la source
tl; dr: Pour répondre à votre question spécifique,
-g3
"inclut des informations supplémentaires telles que les définitions de macros ... Certains débogueurs prennent en charge l'expansion des macros lorsque vous utilisez-g3
", alors qu'il-g
n'inclut pas ces informations supplémentaires.La réponse plus large est que gcc prend en charge quatre niveaux d'informations de débogage, de
-g0
(informations de débogage désactivées) à-g3
(informations de débogage maximales).Spécifier
-g
équivaut à-g2
. Curieusement, la documentation gcc en dit peu sur les informations-g
/-g2
inclut ou exclut:la source