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.
:
Bearbeitet durch User
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.