Dies ist der Befehl dwarfdump, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
dwarfdump - gibt DWARF-Debug-Informationen eines ELF-Objekts aus
ZUSAMMENFASSUNG
Zwergenhalde [Optionen] Objektdateiname
BESCHREIBUNG
Die Zwergenhalde Befehl druckt oder überprüft DWARF-Abschnitte, wie von bestimmten Optionen angefordert.
Ohne Optionen (aber mit den erforderlichen Objektdateiname ) alle Abschnitte drucken (aber einige
Abschnitte können nicht unabhängig voneinander sicher gedruckt werden, daher werden diese nur im Offset gedruckt
wobei sich der Abschnitt .debug_info auf diese Abschnitte bezieht).
Ab Juni 2011 schließen sich die Druckoptionen und die Prüfoptionen gegenseitig aus (wenn
Prüfoptionen ausgewählt sind, werden die Abschnittsdetails nicht gedruckt). Wenn Fehler sind
Angetroffener Zwergenhaufen versucht, ausreichend Kontext zu drucken, damit man ihn verstehen kann
genau wo der Fehler im DWARF liegt. Diese Änderung macht die Prüfung wirklich großer Objekte
Dateien viel einfacher.
Das Format soll menschenlesbar sein. Wenn ein Skript die Ausgabe analysieren soll, -d
Option ist sinnvoll.
Nicht alle Abschnitte sind tatsächlich in einer bestimmten Objektdatei vorhanden.
Das Format kann sich von Release zu Release ändern, daher ist es unklug, sich zu sehr darauf zu verlassen
das Format.
Frame-Informationen (.debug_frame und .eh_frame) hängen stark vom ABI/ISA des
Objektdatei. Standardmäßig verwenden wir einen generischen Satz von Registernamen, die bis zu 100 . verarbeiten
Register mit dem Namen r0-100. Die Option '-R' verwendet einen eingebauten generischen Registernamensatz
Verarbeitung von bis zu 1200 Registern namens r0-r1199. Das '-x abi= ' Beschreibung unten zeigt
wie man ein abi benennt und dies verwendet, um die -f- oder -F-Verarbeitung zu leiten. Es sei denn, die CPU für die
Die zu kopierende Objektdatei hat viele Register, verwenden Sie nicht -R oder -x abi=generic, da dies möglich ist
unnötig langsam kippende Rahmenabschnitte sein. Verwenden Sie stattdessen das richtige abi (wenn es in
dwarfdump.conf) oder ein Generikum wie -x abi=generic100 oder -x abi=generic500. Bekommen
MIPS/IRIX-Namensnamen registrieren und die alte Version 2 libdwarf-Frame-Schnittstelle aufrufen
Option '-x abi=mips'. Ohne '-R' oder '-x abi= ' dwarfdump ignoriert die dwarfdump.conf
-Datei und verwendet einen einkompilierten generischen Satz von Registernamen. Wenn kein '-x name= ' ist gegeben,
dwarfdump sucht nach "./dwarfdump.conf", "$HOME/.dwarfdump.conf", "
prefix>/lib/dwarfdump.conf" und nimmt die erste gefundene Datei. Wenn ein oder mehrere '-x name= '
gegeben wird, wird die letzte dieser Dateien verwendet und alle anderen solchen Dateien werden ignoriert.
Einige -k (checking) Optionen geben sogenannte harmlose Fehler aus. Das sind Compilerfehler
die kein bekanntes Problem verursachen und nur in libdwarf selbst erkannt werden. Diese
sind in dwarfdump schwer richtig zu melden und alle Fehlerzeichenfolgen werden möglicherweise nicht in der Nähe angezeigt
bis zu dem Zeitpunkt, an dem der Fehler aufgetreten ist.
URI STYLE SPEISUNG ZEICHEN
Die und die Optionen, die Namenszeichenfolgen verwenden, suchen nach URIs und übersetzen die
URI-Strings standardmäßig in Zeichen (siehe -x, -c , -S, -u). Also jedes einzelne %
Zeichen wird so behandelt, als ob die folgenden beiden Zeichen Hex-Ziffern sind, die die
zugrundeliegenden wahren Charakter. Für Shells sind verschiedene Zeichen von Bedeutung (wie bash oder
sh) und getopt (wie das Leerzeichen) Wenn die URI-Übersetzung etwas tut
druckt das Vorher und Nachher der URI-Übersetzung auf der Standardausgabe, also Prüfung von
Die ersten Ausgabezeilen zeigen, ob URI etwas getan hat. Die eigentlichen Optionen selbst
werden als Nicht-URI angenommen. In der Option '-cS&T' muss der -c-Teil also kein URI sein, aber
Das &-Zeichen kann zu Eingabeproblemen führen, sodass stattdessen '-cS%26T' verwendet werden könnte. Um eigentlich
Geben Sie ein einzelnes %-Zeichen (z. B. in einem Namen) ein, verdoppeln Sie es in der Befehlszeile zu %%.
Optionen -U (deaktiviert die URI-Interpretation) und -q (die Suche nach URI-Sequenzen wird stumm gemacht)
geben eine feinere Kontrolle der URI-Interpretation. PP Um als Beispiel einen String'a b' zu erhalten, machen Sie den
string 'a%20b' (hier ist das Anführungszeichen (') zur Darstellung nicht Teil des Strings, obwohl quote
ist sicherlich in einem Namen problematisch). Anstatt " Anführungszeichen in der Zeichenfolge zu maskieren, geben Sie ein
%25, wie in
'a "b" sollte 'a%20%25b' eingegeben werden Alle Zeichen können im URI-Stil eingegeben werden, nicht nur
Zeichen, die für die Shell oder getopt problematisch sind. Wir empfehlen Ihnen dringend, nicht zu tippen
Zeichen im URI-Stil, wenn solche nicht benötigt werden, oder verwenden Sie das %-Zeichen selbst im Befehl
Zeilenzeichenfolgen, es sei denn, Sie müssen.
DRUCK OPTIONAL
-a Drucken Sie jeden Abschnitt so unabhängig wie möglich aus. Abschnitte, die sicher sein können
unabhängig gedruckt (wie .debug_abbrev) relevante Informationen im Bericht gedruckt haben
(manchmal abhängig von -v).
-b Drucken Sie den Abschnitt .debug_abbrev. Denn die DWARF-Spezifikationen schließen das nicht aus
Garbage-Datenbereiche in .debug_abbrev (wenn sie nicht von .debug_info referenziert werden)
alle Garbage-Bytes können dazu führen, dass dieser Druck fehlschlägt.
-c Standortlisten drucken.
-f Drucken Sie den Abschnitt .debug_frame.
-F Drucken Sie den Abschnitt .eh_frame.
-i Drucken Sie den Abschnitt .debug_info.
-l Drucken Sie den Abschnitt .debug_info und die zugehörigen Zeilenabschnittsdaten.
-m Drucken Sie den Abschnitt .debug_macinfo.
-N Drucken Sie den Abschnitt .debug_ranges. Denn die DWARF-Spezifikationen schließen das nicht aus
Garbage-Datenbereiche in .debug_ranges (wenn sie nicht von .debug_info referenziert werden)
alle Garbage-Bytes können dazu führen, dass dieser Druck fehlschlägt.
-p Drucken Sie den Abschnitt .debug_pubnames.
-r Drucken Sie den Abschnitt .debug_aranges.
-s Drucken Sie den Abschnitt .debug_string.
- das Drucken Sie nur die IRIX-Abschnitte .debug_static_funcs und .debug_static_vars.
-tf Drucken Sie den Nur-IRIX-Abschnitt .debug_static_funcs.
-Fernseher Drucken Sie den Nur-IRIX-Abschnitt .debug_static_vars.
-w Drucken Sie den nur IRIX-Abschnitt .debug_weaknames.
-y Drucken Sie den Abschnitt .debug_pubtypes (und .debug_typenames, einen Abschnitt nur für SGI IRIX).
Druckverlagerungen von dwarfdump können dabei helfen festzustellen, ob dwarfdump alle versteht
eventuell vorhandene Umzüge.
-o Drucken Sie alle Umzugsunterlagen so gut wir können.
-oi Drucken Sie .rel*debug_info-Verlagerungen.
-ol .rel*debug_line-Verlagerung drucken.
-op .rel*debug_pubnames-Verlagerung drucken.
-oa Hat keine Wirkung.
-Oder Drucken Sie .rel*debug_aranges-Verlagerungen.
-oder Drucken Sie .rel*debug_frame-Verlagerungen.
-ooh Drucken Sie .rel*debug_loc-Verlagerungen.
-oder Drucken Sie .rel*debug_ranges-Verlagerungen.
-g Normalerweise nur zum Testen von libdwarf verwendet, weist dies dwarfdump an, .debug_info zu drucken
und verwenden Sie eine ältere Schnittstellenfunktion dwarf_loclist() (eine Funktion, die nicht mit
alle aktuellen Standortlisten).
-V Drucken Sie einen Dwarfdump-Datums-/Versionsstring und stoppen Sie.
ÜBERPRÜFUNG OPTIONAL
-cg Beschränkt die Überprüfung auf Compiler, deren Erzeugerzeichenfolge mit 'GNU' beginnt und sich dreht
aus -cs.
-cs Beschränkt die Überprüfung auf Compiler, deren Erzeugerzeichenfolge mit 'SN' beginnt und sich dreht
aus -cg .
-cname Beschränkt die Überprüfung auf Compiler, deren Erzeugerzeichenfolge 'name' enthält (nicht Groß-/Kleinschreibung).
empfidlich). Der 'name' wird als URI-String gelesen.
-ka : Schaltet on alle Überprüfung Optionen ausgeschlossen -kxe (-kxe könnte
Seien Sie langsam genug, um es möglicherweise nicht routinemäßig zu verwenden.)
-kb : Schecks für sicher Abkürzungen Abschnitt Fehler wann Lesen
Stirbt.
-kc Prüft auf Fehler in Konstanten in debug_info.
-kd Aktiviert die vollständige Berichterstellung der Fehlersummen pro Hersteller. (die Standardeinstellung zeigt weniger an
Detail).
-zu Aktiviert das Lesen von Pub-Namen und das Prüfen auf fde-Fehler.
-kf Aktiviert die Überprüfung auf FDE-Fehler.
-kF Aktiviert die Prüfung auf Zeilentabellenfehler.
-kg Aktiviert die Überprüfung auf nicht verwendete Lücken in .debug_info (diese Lücken sind kein Fehler, nur
Platzverschwendung).
-ki Veranlasst den Ausdruck einer Zusammenfassung der Prüfergebnisse pro Compiler (Produzent) am
Ende.
-cl Aktiviert die Überprüfung der Standortliste.
-km Schaltet die Überprüfung der Bereiche ein.
-kM Schaltet die Überprüfung von Aranges ein.
-kr Aktiviert die Überprüfung von DIE-Tag-attr-Kombinationen.
-kR Aktiviert das Lesen von DIEs und das Prüfen auf Vorwärtsdeklarationen von DW_AT_specification
Attribute. (die kein Fehler sind, aber eine Quelle der Ineffizienz sein können für
Debugger).
-ks Aktiviert zusätzliche Berichte für einige DIE-Fehler, die bei der Überprüfung erkannt werden.
-kS Aktiviert die Überprüfung von DIE-Referenzen auf Zirkelreferenzen.
-kt Aktiviert die Prüfung von Tag-Tag-Kombinationen.
-kx Schaltet check_frames ein.
-kxe Deaktiviert grundlegende check_frames und aktiviert die erweiterte Frame-Überprüfung.
-ky Aktiviert type_offset, decl_file-Überprüfung,
zur Auswahl MODIFIKATOREN
-C Normalerweise ist bei der Prüfung auf Tag-Tag- oder Tag-Attribut-Kombinationen sowohl der Standard
Kombinationen und einige gängige Erweiterungen sind erlaubt. Mit -C sind die Erweiterungen
aus der zulässigen Kombinationsklasse herausgenommen.
-d Setzen Sie beim Drucken von DIEs alle Attribute für jeden DIE in dieselbe (lange) Zeile wie
der TAG. Dies macht die Suche nach DIE-Informationen (wie bei grep) viel einfacher als
das gesamte DIE ist auf einer Linie.
-D Deaktiviert die Anzeige von Schnittversätzen und Attributwerten in der Druckausgabe.
Die Ausgabe von .debug_info ist also nur TAGs und Attribute. Für Kneipennamen (und dergleichen)
es entfernt Offsets aus der Ausgabe. Für Standortlisten entfernt es Offsets von
die Ausgabe, aber das ist nutzlos, da die Attributwerte nicht angezeigt werden, also auch nicht
macht die Standortdaten.
-e Aktiviert das Abschneiden von Attribut- und Tagnamen. Aus DW_TAG_foo wird beispielsweise
foo. Nicht prüfkompatibel, nur zum Drucken von DIEs sinnvoll.
-G Fügen Sie beim Drucken globale Offsets zu den gedruckten Offsets hinzu.
-H Anzahl
Beim Drucken oder Prüfen von .debug_info beendet dies die Suche nach 'Nummer'
Zusammenstellungseinheiten. Beim Drucken von Rahmeninformationen beendet dies die FDE
Berichterstattung nach 'Zahl' FDEs und CIE-Berichterstattung (was geschieht, wenn man -v hinzufügt)
nach 'Anzahl' CIEs. Beispiel '-H 1'
-M Beim Drucken bedeutet dies, dass das FORM für jedes Attribut angezeigt werden soll. Wenn eine
-v wird auch hinzugefügt (oder mehr als eins), dann werden auch Details zu jeder Formumleitung hinzugefügt
gezeigt.
-n Beim Drucken von Rahmen wird die Suche nach Funktionsnamen deaktiviert. In einem wirklich
Bei großen Objekten kann die Suche länger dauern, als man warten möchte, also vermeidet dies
die Suche.
-Q Unterdrückt das Drucken von Abschnittsdaten (wird automatisch mit einer Prüfoption eingestellt).
-R Beim Drucken von Rahmen für ABIs mit vielen Registern ermöglicht dies bis zu 1200
zu benennende Register (wie R999) ohne eine ABI zu wählen mit zum Beispiel '-x
abi=ppc'
-v Erhöht die beim Drucken angezeigten Details. In einigen Abschnitten mit mehr -v-Optionen
erhöht die Details (eins bis drei sind nützlich) oder ändert den Bericht in
zeigen Sie zum Beispiel die aktuellen Zeilendaten-Befehle anstelle der resultierenden Zeilen-
Tabelle.
SELEKTIV EINTRAG DRUCK
Diese -S-Optionen stehen allein und drucken grundlegende Informationen über die Kompilierungseinheit und
STERBEN, wo die Saiten erscheinen. Höchstens einer der folgenden ist wirksam (also für
Beispiel: man kann nur ein 'Match' haben, aber man kann ein 'Match', ein 'any' und a . haben
'regex'). Jedes -S bewirkt, dass der Abschnitt .debug_info überprüft wird. Keine Prüfmöglichkeiten oder
Druckoptionen sollten mit -S angegeben werden.
-S Übereinstimmung=Zeichenfolge
Beim Drucken von DIEs für jeden Tag-Wert oder Attributnamen, der mit 'string' übereinstimmt
Zusammenstellungseinheitsinformationen und deren Abschnittsversatz genau drucken. Beliebige CU mit
keine Übereinstimmung wird nicht gedruckt. Der 'string' wird als URI-String gelesen.
-S beliebig=Zeichenfolge
Beim Drucken von DIEs für jeden Tag-Wert oder Attributnamen, der 'string' enthält
irgendwo im Tag oder Attribut (Groß-/Kleinschreibung nicht beachten) die Kompilierungseinheit drucken
Informationen und deren Abschnittsoffset. Jede CU ohne Übereinstimmung wird nicht gedruckt. Die
'string' wird als URI-String gelesen.
-S Regex=Zeichenfolge
Beim Drucken von DIEs für jeden Tag-Wert oder Attributnamen, bei dem die 'Zeichenfolge' reqular
Ausdrucksübereinstimmungen geben die Informationen zur Kompilierungseinheit und ihren Abschnittsoffset aus.
Jede CU ohne Übereinstimmung wird nicht gedruckt. Der 'string' wird als URI-String gelesen.
Die Zeichenfolge darf keine Leerzeichen oder andere Zeichen enthalten, die für von Bedeutung sind getopt(3) und
die Shell entfernt Anführungszeichen und andere Zeichen. Es wird also angenommen, dass die Zeichenfolge in . ist
URI-Stil und wird übersetzt. Mit anderen Worten, um 'ab' zu entsprechen, machen Sie die -S-Zeichenfolge 'a%20b'
Anstatt " Anführungszeichen in der Zeichenfolge zu maskieren, geben Sie %25 ein, wie in
'a 'b' sollte 'a%20%25b' eingegeben werden (die ' sind hier zur Erläuterung, nicht Teil der
Saiten). Alle Zeichen können im URI-Stil eingegeben werden, nicht nur Zeichen, die
problematisch für die Shell oder getopt.
Die Optionen -S any= und -S regex= können nur verwendet werden, wenn die benötigten Bibliotheksfunktionen
zum Zeitpunkt der Konfiguration gefunden.
Die Option -W ist ein Modifikator für die Option -S und erhöht die Ausgabemenge -W
druckt. Jetzt zeigen wir das -W im Kontext mit einer -S Option.
-S Übereinstimmung=Zeichenfolge1 -W
Gibt den übergeordneten Baum und den untergeordneten Baum für die DIEs aus, die mit -S übereinstimmen.
-S Übereinstimmung=Zeichenfolge2 -Wp
Gibt den Elternbaum für die DIEs aus, die mit -S übereinstimmen.
-S Übereinstimmung=Zeichenfolge3 -Toilette
Gibt den Elternbaum für die DIEs aus, die mit -S übereinstimmen.
anderes OPTIONAL
-# Anzahl
Diese Option steuert die interne Debugging-Ausgabe, höhere Zahlen bedeuten mehr Debugging
Aktionen. Siehe Quellcode.
-x name=/p/a/t/h.conf
Der angegebene Dateipfad ist der Name einer Datei, von der angenommen wird, dass sie eine dwarfdump.conf-ähnliche Datei ist.
Der Dateipfad wird als URI-String gelesen.
-x abi=ppc
Wählt das abi (aus einer dwarfdump.conf-Datei), das im Druckrahmen verwendet werden soll
Informationen (hier am Beispiel von ppc). Das abi wird als URI-String gelesen.
-P Wenn diese Option aktiviert ist, wird die Liste der für jeden Hersteller angezeigten Namen der Kompilierungseinheiten hinzugefügt.
Compiler zu den gedruckten Prüfergebnissen.
-q Wenn beim Lesen der Befehlszeile eine URI gefunden und übersetzt wird, seien Sie ruhig
die URI-Übersetzung. Das heißt, drucken Sie nicht das Original und die übersetzte Option
Saiten.
-E Aktiviert das Drucken von objektinternen Header-Daten für einige Systeme (für Unix/Linux tut
nichts).
-u Cuname
Aktiviert das selektive Drucken von DIEs (Drucken wie -i). Nur die DIEs für a
Zusammenstellungseinheit, die dem angegebenen Namen entspricht, werden gedruckt. Wenn die Kompilierungseinheit
ist ./a/b/cc Der von Ihnen angegebene 'cuname' sollte cc sein, da die Zeichen durch die
letzte Pfadtrennung / werden ignoriert. Wenn 'cuname' mit einem / beginnt, dann das gesamte
Der Name-String einer Kompilierungseinheit muss mit 'cuname' übereinstimmen. Der 'cuname' wird gelesen als
URI-String.
-U Deaktivieren Sie die URI-Interpretation der Befehlszeilenzeichenfolgen vollständig. Muss sein
in der Befehlszeile, bevor URI-Zeichenfolgen vollständig wirksam sind.
-z Wird nicht mehr unterstützt.
Verwenden Sie dwarfdump online mit den onworks.net-Diensten