Woher weiß ich, welche Art von Debug-Informationen sich in einer ELF-Objektdatei befinden?

Lesezeit: 2 Minuten

Benutzer-Avatar
johnj33

Ich habe eine ELF-Objektdatei. Ich möchte wissen, welche Art von Debugging-Informationen darin enthalten sind. Es wurde mit dem Diab-Compiler (C-Source) für die PPC-Architektur kompiliert. Ich bin mir ziemlich sicher, dass es mit Debugging-Symbolen gebaut wurde.

Ich habe versucht, die Debugging-Informationen mit zu extrahieren dwarfdump aber ich arbeite nicht, also denke ich, dass die Debugging-Informationen nicht vom Typ DWARF sind.

$ dwarfdump file.elf
No DWARF information present in file.elf

Die Verwendung von objdump zum Anzeigen von Debugging-Informationen bleibt leer.

$ objdump -g file.elf 
file.elf:     file format elf32-powerpc

Kann es sein, dass diese ELF-Datei keine Debugging-Informationen enthält, obwohl die ELF-Datei Abschnitte namens .debug_sfnames, .debug_srcinfo und .debug.srcinfo? Oder sind die Debugging-Informationen in einem Format gespeichert, das objdump kann nicht umgehen?

  • Kannst du die Datei irgendwo posten?

    – Martin Zimmermann

    17. August 2011 um 23:05 Uhr

  • versuchen Sie es auch mit “objdump -W file.elf”, nur für den Fall. Ich denke, objdump -g wird nicht glücklich sein, es sei denn, die Info ist STABS

    – Null Zeiger

    18. August 2011 um 9:37 Uhr

  • Okay, ich habe es herausgefunden. Nun, ich weiß immer noch nicht wirklich, welche Art von Debugging-Informationen die ELF-Datei enthält, aber ich habe den Befehl gefunden, um sie zu extrahieren. ddump2 -D elffile macht den Trick. Ich denke, ddump2 gehört zu der Toolchain, die mit dem diab-Compiler geliefert wurde.

    – johnj33

    20. August 2011 um 23:25 Uhr


Benutzer-Avatar
Lelouch Lamperouge

Sie sollten wahrscheinlich die verwenden nm

Das nm-Dienstprogramm zeigt symbolische Informationen an, die in der Objektdatei, der ausführbaren Datei oder der nach Datei benannten Objektdateibibliothek erscheinen. Wenn für eine gültige Eingabedatei keine symbolischen Informationen verfügbar sind, meldet das nm-Dienstprogramm diese Tatsache, betrachtet sie jedoch nicht als Fehlerbedingung.

Alternativ können Sie Tools wie verwenden ldd um zu sehen, welche Bibliotheken von einer Binärdatei benötigt werden.

Es scheint, als hätte niemand jemals Ihre eigentliche Frage beantwortet, nämlich: Wie kann man programmgesteuert die Geschmacksrichtung von Debug-Symbolen bestimmen, die in einer bestimmten ELF-Binärdatei vorhanden sind. Soweit ich das beurteilen kann, wird dies in ELF nicht explizit angegeben; es kann jedoch durch das Vorhandensein bestimmter Abschnittsnamen in der ELF-Datei gefolgert werden. Zum Beispiel: Ein Abschnitt mit dem Namen “.debug_info” impliziert DWARF2 oder besser, während “.stab” Stabs impliziert. Ein schnelles Googeln Ihrer “.debug_sfnames” schlägt DWARF1 vor. (Ich weiß nicht, warum Ihr ‘dwarfdump’ das nicht identifiziert hat … vielleicht ist Ihr dwarfdump für neuere DWARFs und für die Abwärtskompatibilität ausgelegt?)

Unter GNU/Linux:

$ readelf --debug-dump=info /absolute/path/to/file | grep "Version" | uniq

Gibt die Version der DWARF-Symbole zurück, die in der Binärdatei verwendet wird.

1049840cookie-checkWoher weiß ich, welche Art von Debug-Informationen sich in einer ELF-Objektdatei befinden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy