Forum: Compiler & IDEs Programmspeicherverbrauch visualisieren


von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Hallo zusammen,

immer wieder habe ich das Problem, dass meine Firmware zu groß wird und 
nicht mehr in den Flash passt. Den oder die Übeltäter lassen sich ja 
über objdump's .lst Files identifizieren. Nur leider sind .lst Files in 
meinen Augen alles andere als übersichtlich. Aus diesem Grund habe ich 
ein kleines Tool geschrieben, welches .lst Files parst und visualisiert.

Ausprobieren: http://files.rtti.de/lstvis/
Sourcecode: https://github.com/rti/lstvis

Vielleicht hilft's ja jemandem. Mein Firmware passt jedenfalls schon 
wieder in den Flash ;)

Lieben Gruß
Robert

von Wilhelm F. (Gast)


Lesenswert?

Robert Timm schrieb:
> Aus diesem Grund habe ich
> ein kleines Tool geschrieben,

Man braucht gar nicht mal viel zu schreiben, wenn man sich Daten aus 
langen unübersichtlichen Files schnell anzeigen lassen will. Ich habe 
einen Grep-Befehl in einem Command-File (Batch), um mir beim 
Kompiliervorgang drei wichtige Werte anzeigen zu lassen. Grep.exe befand 
sich in einem Set von Unix-Tools, die man sich im Internet suchen kann.

Aber wie immer gibt es für ein Problem sicherlich 1000 Lösungen.

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Wilhelm Ferkes schrieb:
> drei wichtige Werte anzeigen zu lassen

Interessant, welche Werte sind das?

von Wilhelm F. (Gast)


Lesenswert?

Robert Timm schrieb:
> Wilhelm Ferkes schrieb:
>> drei wichtige Werte anzeigen zu lassen
>
> Interessant, welche Werte sind das?

Der Codeverbrauch und Datenverbrauch natürlich, was am meisten 
interessiert.

Mit dem Grep-Tool kann ich mir aber beliebig alles zeilenweise aus 
Listing- und Map-Files heraus suchen, was ich sehen will.

Ich lernte mit dem ersten PC unter DOS die Batch-Programmierung, und 
verwende sie bis heute gerne, sie wurde sogar mit den Windows-Versionen 
immer noch komfortabler, z.B. FOR-Schleifen, die machte Win ME noch 
nicht.

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Wilhelm Ferkes schrieb:
> Der Codeverbrauch und Datenverbrauch natürlich, was am meisten
> interessiert.

Ach so. Na das macht doch aber "size" auch schon, welches mit der GCC 
Toolchain mitkommt.

Das oben erwähnte Tool analysiert auf "Symbol" Level. Man bekommt also 
z.B. den Speicherverbrauch einzelner Funktionen übersichtlich 
dargestellt. Nicht nur dass das Programm zu groß ist, sondern was im 
Programm zu groß ist. :)

von Wilhelm F. (Gast)


Lesenswert?

Robert Timm schrieb:
> sondern was im
> Programm zu groß ist. :)

Aah. Z.B. ein printf-Befehl, der mal locker 1-2kB verbraucht, und es im 
Code nur eine einzelne Zeile ist?

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Genau. Hier ein Screenshot von der Analyse eines zu simplen Programmes. 
Aber ich denke die Idee ist ersichtlich.

https://raw.github.com/rti/lstvis/master/example.png

von Wilhelm F. (Gast)


Lesenswert?

Die Farben sind bescheuert, und mit den meisten Angaben außer der 
Codelänge kann ich überhaupt gar nichts anfangen.

In einem meiner letzten Command-Files hatte ich folgendes drin:
1
echo.
2
%unxutilspath%\grep -i -n "Rtop" %projectspath%\%listingdir%\main.map
3
%unxutilspath%\grep -i -n "Stackbase" %projectspath%\%listingdir%\main.map
4
%unxutilspath%\grep -i -n "Stacksize" %projectspath%\%listingdir%\main.map
5
%unxutilspath%\grep -i -n "Stacktop" %projectspath%\%listingdir%\main.map
6
echo.
7
%unxutilspath%\grep -i "BDATA" %projectspath%\%listingdir%\main.map
8
%unxutilspath%\grep -i "DDATA" %projectspath%\%listingdir%\main.map
9
%unxutilspath%\grep -i "IDATA" %projectspath%\%listingdir%\main.map
10
%unxutilspath%\grep -i "CODEBASE " %projectspath%\%listingdir%\main.map
11
%unxutilspath%\grep -i "CODE " %projectspath%\%listingdir%\main.map

Diese 9 Zeilen werden mir bei Kompilierung im Ausgabefenster direkt 
angezeigt. Ich könnte sie auch noch in eine Textdatei schreiben lassen.

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Ob du's glaubst oder nicht, ich habe das hier nicht gepostet um mit dir 
über Farben zu diskutieren. Wenn du das Tool nicht brauchst, ok. Was 
diesen Thread bereichert hätte, wären Fehlermeldungen, 
Verbesserungsvorschläge und Links zu Tools, die ein ähnliches Problem zu 
lösen versuchen, gewesen.

von Wilhelm F. (Gast)


Lesenswert?

Robert Timm schrieb:
> Wenn du das Tool nicht brauchst, ok. Was
> diesen Thread bereichert hätte, wären Fehlermeldungen,
> Verbesserungsvorschläge und Links zu Tools, die ein ähnliches Problem zu
> lösen versuchen, gewesen.

Nein, ich brauche es wohl kaum oder gar nicht, machte aber einen 
Vorschlag. Einen Verbesserungsvorschlag machte ich auch: Die Farben sind 
einfach Hippie.

von Kommentator (Gast)


Lesenswert?

Robert Timm (Firma: rtti.de) (rti) schrieb:

> Ob du's glaubst oder nicht, ich habe das hier nicht gepostet um mit dir
> über Farben zu diskutieren.

Bei den Farben gibt es auch nichts zu diskutieren, außer der 
Feststellung, sie sind absolut indiskutabel.

Insofern hat Willem vollkommen recht.

von Wilhelm F. (Gast)


Lesenswert?

Die Augen sind mit Ü50 nicht mehr so hip wie mit 16, Orange auf schwarz 
o.ä. geht mal gar nicht. Ich mußte erst mal den Bildschirm auf 200% 
vergrößern, um was lesen zu können.

Das ist jetzt keine böse Unterstellung, aber manch einer wird schon noch 
mal bemerken, wie die Augen von 30 über 40 über 50 schlechter werden.

von Kommentator (Gast)


Lesenswert?

Wilhelm Ferkes (ferkes-willem) schrieb:

> Das ist jetzt keine böse Unterstellung, aber manch einer wird schon noch
> mal bemerken, wie die Augen von 30 über 40 über 50 schlechter werden.

Und die Dioptrien auf der Nase werden auch mehr.

;)

von Norbert (Gast)


Lesenswert?

Robert Timm schrieb:
> Ob du's glaubst oder nicht, ich habe das hier nicht gepostet um mit dir
> über Farben zu diskutieren. Wenn du das Tool nicht brauchst, ok. Was
> diesen Thread bereichert hätte, wären Fehlermeldungen,
> Verbesserungsvorschläge und Links zu Tools, die ein ähnliches Problem zu
> lösen versuchen, gewesen.
1
nm --size-sort --reverse-sort output.elf

Und die Unixer hängen einfach noch ein
1
| head
 an!


Fertig! ;-)

von Norbert (Gast)


Lesenswert?

Ups, einen Output wollte iich eigentlich noch anhängen:
1
00002000 B uart_io_buf
2
00000fb8 t cbUSBD_HID_Setup
3
000005f0 B USB_OTG_dev
4
000002e4 T USB_OTG_EPStartXfer
5
000002d4 T USB_OTG_CoreInitDev
6
000002d0 T In_USB_Mode
7
000002b6 T __sfvwrite_r
8
00000248 T _printf_i
9
0000022c T _vfprintf_r
10
0000022c T _vfiprintf_r
11
0000020c t DCD_HandleInEP_ISR
12
0000020a t cbUSBD_EP0_TxSent
13
0000020a t cbUSBD_EP0_RxReady
14
...

von Wilhelm F. (Gast)


Lesenswert?

Kommentator schrieb:

> Und die Dioptrien auf der Nase werden auch mehr.
>
> ;)

Du lachst heute noch, morgen nicht mehr so. ;-)

Es sei denn, du hast schon die Glasbausteine bzw. Schnapsgläser auf.

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Norbert schrieb:
>
1
nm --size-sort --reverse-sort output.elf
>
> Und die Unixer hängen einfach noch ein
1
| head
 an!
>
>
> Fertig! ;-)

Cool. Das ist ein Argument. Danke!

von Senil (Gast)


Lesenswert?

Wilhelm Ferkes schrieb:
> Kommentator schrieb:
>
>> Und die Dioptrien auf der Nase werden auch mehr.
>>
>> ;)
>
> Du lachst heute noch, morgen nicht mehr so. ;-)
>
> Es sei denn, du hast schon die Glasbausteine bzw. Schnapsgläser auf.

Demenz ist im Alter allerdings das größere Problem. (Die merkt man als 
Betroffener nämlich nicht, im Gegensatz zu den Glasbausteinen. Da lachen 
dann nur die anderen nicht mehr.)

Ja, unser Ferkels bereichert einfach jede Diskussion mit seinen 
geistreichen Anmerkungen.

von Heini (Gast)


Lesenswert?

Hm, auch ein Weg an fremden Code zu kommen. ;)

von Robert T. (Firma: rtti.de) (rti)


Lesenswert?

Heini schrieb:
> Hm, auch ein Weg an fremden Code zu kommen. ;)

Die Analyse läuft lokal im Browser, siehe Code... facepalm

Langsam frage ich mich warum ich hier überhaupt gepostet habe, na 
wenigstens ein konstruktiver Kommentar kam von Norbert.

von Kommentator (Gast)


Lesenswert?

Wilhelm Ferkes (ferkes-willem) schrieb:
>Kommentator schrieb:
>> Und die Dioptrien auf der Nase werden auch mehr.
>>
>> ;)

> Du lachst heute noch, morgen nicht mehr so. ;-)

> Es sei denn, du hast schon die Glasbausteine bzw. Schnapsgläser auf.

Das ;) war ein Augenzwinkern, kein Lachen und ja, ich bin selbst 
Betroffener (diesmal ohne Zwinkern). Glasbausteine sind's noch nicht, 
aber die Tendenz ist leider ziemlich eindeutig.

Ist aber OT.

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.