Beim Kompilieren von C-Quellcode mit gcc oder Clang verwende ich immer das -g
Flag, um Debugging-Informationen für gdb zu generieren.
gcc -g -o helloworld helloworld.c
Mir ist aufgefallen, dass einige Leute -g3
stattdessen empfehlen . Was ist der Unterschied zwischen den -g
und -g3
Flags? Gibt es auch einen Unterschied zwischen -g
und -ggdb
?
Antworten:
Aus den Dokumenten :
quelle
tl; dr: Um Ihre spezifische Frage zu beantworten,
-g3
"enthält zusätzliche Informationen wie Makrodefinitionen ... Einige Debugger unterstützen die Makroerweiterung, wenn Sie sie verwenden-g3
", während-g
diese zusätzlichen Informationen nicht enthalten sind.Die umfassendere Antwort lautet, dass gcc vier Ebenen von Debug-Informationen unterstützt, von
-g0
(Debug-Informationen deaktiviert) bis-g3
(maximale Debug-Informationen).Die Angabe
-g
entspricht-g2
. Seltsamerweise sagen die gcc-Dokumente wenig darüber aus, welche Informationen-g
/-g2
enthalten oder ausschließen:quelle