Forum: Compiler & IDEs Größe von Programmteilen


von floGzmo (Gast)


Lesenswert?

Servus zusammen

Ich habe bei den Peripheral Tests, eines Systems mit Xilinx MicroBlaze, 
herumgebastelt und nach meinen Wünschen verbogen. Über "Generate Linker 
Script" kann ich mir die Größe der diversen Data/Code Sections (.text, 
.data, .bss ...) ansehen. Jetzt möchte ich wissen welche Programmteile 
(welche Funktion oder welche Variable) wieviel in den jeweiligen 
Sections belegen. Zumal ich auch noch nicht so sicher weiss was er denn 
nun alles aus den .h files mit rein packt in das Programm.

Oder geht es nur rekursiv. Ich schreibe mir den Speicherbedarf vorher 
auf, kommentiere eine Funktion aus. Vergleiche den Speicherbedarf unter 
Generate Linker Script nachher.

Gruß Flo

von Oliver (Gast)


Lesenswert?

floGzmo schrieb:
> Zumal ich auch noch nicht so sicher weiss was er denn
> nun alles aus den .h files mit rein packt in das Programm.

Aus .h-Files sollte eigentlich fast gar nichts im Programm landen, was 
Speicher verbraucht. So etwas hat da drin, bis auf wenige Ausnahmen, 
nichts zu suchen.

Die Info, die du suchst, steht üblicherweise in einem Map-File. Wie du 
das erzeugst, sollte die Doku zu deinem System verraten. Falls das ein 
gcc ist, lautet die option -Map.

Oliver

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


Lesenswert?

nm --print-size --size-sort <name of your ELF file>

Das Kommando "nm" kann dabei auch noch irgendeinen Präfix haben in
deiner Toolchain.  Wenn dein Compiler beispielsweise "foo-gcc"
heißt, wird das zugehörige nm-Kommando "foo-nm" heißen.

von floGzmo (Gast)


Lesenswert?

Vielen Dank für die Antworten.

Die Entwicklungsumgebung bei Xilinx nennt sich SDK und basiert auf 
Eclipse und hat damit den gcc. Die Option -Map hab ich dabei nicht 
gefunden. Es ist zwar die Rede von "mb-gcc -Wl,-M ...
Signal the linker to produce a map file with
the -M option.", jedoch hab ich das nicht zum laufen gebracht.

Die Sache mit mb-nm --print-size... hat funktioniert. Dort konnte ich 
nun die Größen von Funktionen und Daten des .elf Files sehen.

Gibt es noch die Möglichkeit zu sehen in welche Section die jeweilige 
Funktion bzw. die Daten geschrieben werden?

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


Lesenswert?

t, T - text (Programmtext)
d, D - initialisierte Daten
b, B - nichtinitialisierte Daten ("bss")

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.