Forum: Compiler & IDEs Wie kann ich Ram/Rom Verbrauch der Module aus dem elf File extrahieren?


von Lukas Hönnighausen (Gast)


Lesenswert?

Hallo,

ich habe aktuell mehrere embedded Compiler die mir jeweils Object files 
und das dazugehörige executable generieren, alle Daten sind im elf 
Format.
Aus diesen Dateien würde ich gerne den Ram und Rom Verbrauch der 
einzelnen Module auslesen.
Die meisten Compiler liefern ein .map file mit, dass diese Informationen 
bereitstellt. Ich würde allerdings nur ungern für jeden Compiler einen 
eigenen Parser schreiben, sondern die Daten lieber mithilfe der Binutils 
aus den elf files ziehen.
Hat jemand Erfahrungen damit oder kennt Projekte die ähnliche Ansätze 
verfolgen?
Kann mir jemand Tipps zur Umsetzung geben oder sieht Probleme?

von Peter D. (peda)


Lesenswert?

Die RAM-Belegung zeigt nur globale und statische Variablen an. Um lokale 
Variablen (Stackverbrauch) zu zählen, muß man den Calling-Tree 
analysieren. Geht aber auch nur, solange keine rekursiven Aufrufe 
erfolgen. Auch können manche Analysetools keine Aufrufe über 
Funktionspointer verfolgen.
Auch der RAM-Verbrauch von Malloc läßt sich kaum überprüfen.

von 900ss (900ss)


Lesenswert?

Peter D. schrieb:
> Die RAM-Belegung zeigt nur globale und statische Variablen an.

Stimmt. Wenn das reicht, dann geht das gut mit dem size-Tool aus den 
Binutils. Die Ausgabe kann so aussehen:
1
$ size --format=Berkeley ranlib size
2
            text    data    bss     dec     hex     filename
3
            294880  81920   11592   388392  5ed28   ranlib
4
            294880  81920   11888   388688  5ee50   size

Ansonsten gibt es noch readelf oder objdump, mit denen man das auch 
erledigen kann.
Aber eben beim RAM nur die statischen Größen.

: Bearbeitet durch User
von Lukas Hönnighausen (Gast)


Lesenswert?

Vielen Dank für die Tipps. Ich habe wie vorgeschlagen ein Python Skript 
auf Basis der Binutils (size) geschrieben um die jeweilige Ram und Rom 
auslastung automatisiert auszulesen.

Nun würde ich noch gerne zusätzlich den 'Run from Ram' Anteil der 
jeweiligen Module bestimmen. Hat jemand da eine Idee?

von 900ss (900ss)


Lesenswert?

Lukas Hönnighausen schrieb:
> 'Run from Ram' Anteil

Kenn ich nicht. Was meinst du genau? Den Verbrauch auf dem Stack? Der 
lässt sich nur schwierig feststellen und eine genaue Aussage über das 
Maximum geht kaum.

von foobar (Gast)


Lesenswert?

objdump -h gibt detailliertere Informationen ...

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.