Forum: Compiler & IDEs object-file viewer


von Neubi (Gast)


Lesenswert?

hi,

kennt jemand ein tool mit welchem man obj-files (*.o) lesbar ansehen 
kann; dh gibt es eine möglichkeit alle funktionen, bzw. prototypen zu 
diesen funktionen aufzulisten?!

thx
Neubi

von Sven P. (Gast)


Lesenswert?

An den Inhalt kommtst du mit einem Disassembler o.Ä. heran. Ansonsten 
bieten sich u.a. folgende Programme an:
- objdump
- nm
- ldd

von GNU objdump (Gast)


Lesenswert?

GNU objdump

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Der Objektcode kennt aber keine Funktionsprototypen.  Woher auch?
Der kennt nur noch Symbolnamen.  Wenn du das benutzte ABI kennst,
kannst du dir die Prototypen ggf. aus dem Disassembler-Listing
erraten.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Jörg Wunsch schrieb:
> Der Objektcode kennt aber keine Funktionsprototypen.  Woher auch?

Jain. In C++ sind zumindest die Funktionsargumenttypen im Symbolnamen
der Funktion enthalten. Das ist zwar noch nicht der komplette Prototyp,
weil der Rückgabewert fehlt, aber schon mal besser als gar nichts.

nm kann diese gemangelten Symbolnamen übrigens im Klartext darstellen
(Option -C oder --demangle).

von Thomas K. (tomk)


Lesenswert?

Hi,

readelf geht übrigens auch, was Symbole etc. betrifft.

Schönen Tag noch,
Thomas

von Rolf Magnus (Gast)


Lesenswert?

Sofern beim Compilieren Debug-Infos eingeschaltet waren, kann man mit 
objdump auch den Quellcode wieder auslesen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> Sofern beim Compilieren Debug-Infos eingeschaltet waren, kann man mit
> objdump auch den Quellcode wieder auslesen.

Jein.  Der Quellcode selbst steht nicht in der Objektdatei.  objdump
ist lediglich in der Lage, diesen an Hand der Debuginformationen
wieder zum Objektcode hinzu zu sortieren, was (je nach Optimierung)
mehr oder weniger gut funktioniert.  In jedem Falle setzt es aber
voraus, dass die Quellcodedateien, deren Namen in der Debug-
Information referenziert sind, auch noch zugreifbar sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.