Linux:Was ist der beste Weg, um die Code- und statische Datengröße eines Programms abzuschätzen?

StackOverflow https://stackoverflow.com/questions/35485

  •  09-06-2019
  •  | 
  •  

Frage

Ich möchte eine Schätzung darüber erhalten, wie viel Code und statische Daten von meinem C++-Programm verwendet werden.

Gibt es eine Möglichkeit, dies herauszufinden, indem man sich die ausführbaren Dateien oder Objektdateien ansieht?Oder vielleicht etwas, was ich zur Laufzeit tun kann?

Helfen objdump und readelf?

War es hilfreich?

Lösung

„Größe“ ist das traditionelle Werkzeug.„readelf“ bietet viele Optionen.

$ size /bin/sh
   text    data     bss     dec     hex filename
 712739   37524   21832  772095   bc7ff /bin/sh

Andere Tipps

Wenn Sie den nächsten Schritt unternehmen möchten, um die Funktionen und Datenstrukturen zu identifizieren, auf die Sie sich bei der Reduzierung des Footprints konzentrieren sollten, kann Ihnen das Argument --size-sort für nm Folgendes zeigen:

$ nm --size-sort /usr/bin/fld | tail -10
000000ae T FontLoadFontx
000000b0 T CodingByRegistry
000000b1 t ShmFont
000000ec t FontLoadw
000000ef T LoadFontFile
000000f6 T FontLoadDFontx
00000108 D fSRegs
00000170 T FontLoadMinix
000001e7 T main
00000508 T FontLoadBdf

readelf wird in der Tat helfen.Du kannst den ... benutzen -S Möglichkeit;Dadurch werden die Größen aller Abschnitte angezeigt. .text ist (der Großteil) Ihres ausführbaren Codes. .data Und .rodata sind Ihre statischen Daten.Es gibt auch andere Abschnitte, von denen einige zur Laufzeit verwendet werden, andere nur zur Linkzeit.

size -A
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top