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

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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.