2010-10-11 4 views
1

Par défaut, gcc ajoutera une table de symboles à l'exécutable, donc gdb obtiendra une trace de pile lisible.Quelle est la différence entre les informations de débogage entre gcc avec et sans option "-ggdb1"?

Documentation pour l'option -ggdb1 dans gcc page man:

Niveau 1 produit un minimum d'informations, assez pour faire backtraces dans certaines parties du programme que vous ne prévoyez pas de débogage. Cela inclut des descriptions de fonctions et de variables externes, mais pas d'informations sur les variables locales et aucun numéro de ligne.

... qui me semble la même chose que simplement appeler gcc sans aucun argument du débogage. Mais il y a clairement des symboles supplémentaires émis (.debug_frame, .debug_str, .debug_loc).

Alors, quelle est exactement la différence, et y a-t-il un avantage à compiler avec -ggdb1 plutôt que de ne pas simplement supprimer l'exécutable?

Répondre

0

Trouvez l'utilitaire dwarfdump (qui fait partie de libdwarf) et voyez quelles informations de débogage sont émises dans ces sections. Puis décidez vous-même s'il existe une différence entre compiler avec des informations de débogage de niveau 1 et ne pas supprimer l'exécutable. La spécification DWARF est également disponible gratuitement.

Questions connexes