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?
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.
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