In der GCC-Dokumentation heißt es, dass die -g
Option Debugging-Informationen im nativen Format des Betriebssystems (Stabs, COFF, XCOFF oder DWARF 2) erzeugt .
Was ist das native Linux-Debugging-Symbolformat? Wie heißt es?
Update: Ich habe gerade eine 15 Jahre alte Diskussion über die gcc-Mailingliste gefunden , in der gesagt wurde, dass das native Format zu diesem Zeitpunkt Stabs war, und dann überlegten sie, auf DWARF2 umzusteigen. Aber es war vor 15 Jahren ... Irgendwelche Updates? =)
Antworten:
Unter Linux ist die Standardeinstellung jetzt Dwarf 2 und / oder 4. Um dies zu sehen, führen Sie
readelf --debug-dump=info
eine Binärdatei aus, die Debug-Symbole (oder entfernte Symbole) enthält. Wenn Sie beispielsweise auf Fedoraglibc-debuginfo
installiert sind, erhalten Sie beim Ausführenreadelf --debug-dump=info /usr/lib/debug/bin/gencat.debug
so etwas wieDies ist eine Reihe von Informationen zu Dwarf 2 (
Version:
Versionsinformationen finden Sie in der Kopfzeile; dieselbe Binärdatei enthält Abschnitte zu Dwarf 2 und Dwarf 4).quelle
-gdwarf
Option die Standard-DWARF-Version 4 ist. Der gleiche Abschnitt der Dokumentation für gcc-4.7.4 (ich habe hier gcc-4.7.2) besagt jedoch, dass der Standardwert ist DWARF Version 2.gcc -g
==gcc -gdwarf
==gcc -gdwarf-2
gcc -g
verwendet Dwarf 4: gcc.gnu.org/gcc-4.8/changes.html