Wie kann ich Ram/Rom Verbrauch der Module aus dem elf File extrahieren?

Gast #5700870
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?
#5700924
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.
#5700957
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.
Gast #5714809
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?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.