Gibt es einen Verweis auf die Quelldatei in der Binärdatei? Ich habe versucht, Strings auf der Binärdatei ausgeführt und konnte keinen Verweis auf die Quelldatei finden Sie aufgelistetWie verwaltet objdump den Quellcode mit der Option -S?
Antwort
objdump
verwendet die DWARF-Debuginformationen kompiliert in die Binärdatei, die den Quelldateinamen verweist. Wenn die Binärdatei nicht mit Debuginformationen kompiliert wird oder objdump
die Quelldatei nicht finden kann, erhalten Sie keinen Quellcode in der Nur-Ausgabe-Assembly.
Der Quelldateiname wird nicht angezeigt, wenn Sie strings
für die Binärdatei verwenden, da DWARF Komprimierung verwendet.
Wollen Sie sagen, dass wir kompilieren mit Zwerg Debugging aktiviert haben und dann verwenden ' objdump' (mit einigen unbekannten Optionen), um die mit der Disassembly verschachtelte Quelle anzuzeigen? Könnten Sie die tatsächlichen Schritte mit den eigentlichen Befehlen versehen? – jww
@jww: Die Option '-g' für' gcc' aktiviert Debugging-Informationen, und die '-S' -Option ermöglicht es, dissambles mit Source interleaved zu überlagern. Aber die Frage war nicht, wie man das macht; der Fragesteller wusste das bereits, sie fragten stattdessen, wie dies implementiert wird (wie 'objdump' die Quelle findet, die verschachtelt werden soll). – caf
Die Zwergeninformation in einer Binärdatei speichert die Zuordnung zwischen Anweisungen (der Befehlszeiger oder IP tatsächlich) und der Quelldatei und Zeilennummer. Die Quelldatei wird mit dem vollständigen Pfad angegeben, sodass sie auch dann gefunden werden kann, wenn die Binärdatei verschoben wird. Um diese Informationen zu sehen, können Sie objdump --dwarf=decodedline <binary>
verwenden (die Binärdatei muss natürlich mit -g
kompiliert werden).
Sobald Sie objdump -S <binary>
sagen, verwenden Sie diese Zwergeninfo, um Ihnen Quellcode zusammen mit der Demontage zu geben.
Vielleicht sollten Sie ein Live-Beispiel bereitstellen. Ich kann 'objdump' nicht erhalten, um sowohl die Disassemblierung mit den verschachtelten Quellcodezeilennummern zu liefern. – jww
Mein Verständnis ist, dass für objdump
Quellcode aus dem Binärcode anzuzeigen, gibt es eine Voraussetzung: die DWARF-Debuginformationen müssen in die Binärdatei kompiliert werden. (Von gcc -g sourcefile
oder gcc -gdwarf-2 sourcefile
) Und durch die Verarbeitung dieser Informationen ZWERG objdump
ist in der Lage, den Quellcode als @ vlcekmi3 zu bekommen und @vkrnt beantwortet
Wollen Sie sagen, dass wir kompilieren müssen mit aktiviertem Zwergen-Debugging und dann 'objdump' (mit einigen unbekannten Optionen) verwenden, um die mit der Disassembly verschachtelte Quelle anzuzeigen? Könnten Sie die tatsächlichen Schritte mit den eigentlichen Befehlen versehen? – jww
- 1. Wie verwaltet Robospice den Aktivitätszyklus?
- 2. Kann javap die ursprünglichen Quellcodezeilen anzeigen, die mit dem Bytecode vermischt sind, wie objdump -S?
- 3. Wie kann ich cygwin sort mit -S Option eingeben?
- 4. Welchen Abschnitt objdump standardmäßig zerlegen
- 5. Wie man große Datendateien mit GitHub verwaltet?
- 6. objdump lange Adressen nach der Verknüpfung
- 7. ‚sed‘ Kommandofehler als ‚unbekannte Option zu s‘
- 8. Wie man den Rückgabewert eines Threads verwaltet?
- 9. Wie bekomme ich den Text der ausgewählten Option mit vuejs?
- 10. Zerlegen einer flachen Binärdatei mit objdump
- 11. Unterschied zwischen s = s + s und s + = s mit kurzen
- 12. Wie verwaltet man den Status mit Checkboxen in React?
- 13. Wie man ein Shell-Skript (/ bin/sh) mit der Option -s erstellt und die Eingabe innerhalb
- 14. Den Java-Quellcode anhängen
- 15. Es ist möglich, den gesamten Quellcode der Webseite mit C#
- 16. Wie GNU binutils (objdump) verwendet/installiert wird
- 17. Wie kann objdump intel-Syntax ausgeben
- 18. Empfehlungen für den Umgang mit Quellcode Inhouse
- 19. Wie man den Java-Quellcode internationalisiert?
- 20. Wie kann ich den Flash-Quellcode anzeigen?
- 21. Wie verwaltet sqlite3 SELECT-Abfragedaten?
- 22. Wie wird der Code-Speicher verwaltet?
- 23. Wie kann ich den Quellcode der Idris-Standardbibliothek erhalten?
- 24. Wie kann ich den Quellcode der Android-Tastatur bearbeiten?
- 25. Wie man Knoten auf der Taxonomieseite verwaltet?
- 26. Wie verwaltet ptr_vector Speicher?
- 27. Wie kann ich den verlorenen Quellcode wiederherstellen?
- 28. Wie analysiert man den Quellcode von Blender
- 29. Wie sieht man den Quellcode der .net Bibliothek mit ReSharper 5 und Visual Studio 2010?
- 30. ng-option Probleme mit der Option
Gute Frage, schlechte Antworten (bisher). Siehe auch [Wie erhalte ich die Quellzeilen mit der Assembly-Ausgabe über GCC inline?] (Https://stackoverflow.com/q/2412816/608639) – jww