Linux :Quelle est la meilleure façon d’estimer la taille du code et des données statiques du programme ?

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

  •  09-06-2019
  •  | 
  •  

Question

Je souhaite pouvoir obtenir une estimation de la quantité de code et de données statiques utilisées par mon programme C++ ?

Existe-t-il un moyen de le découvrir en examinant les fichiers exécutables ou objets ?Ou peut-être quelque chose que je peux faire au moment de l'exécution ?

Est-ce que objdump et readelf vous aideront ?

Était-ce utile?

La solution

La « taille » est l'outil traditionnel."readelf" a beaucoup d'options.

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

Autres conseils

Si vous souhaitez passer à l'étape suivante consistant à identifier les fonctions et les structures de données sur lesquelles vous concentrer pour réduire l'empreinte, l'argument --size-sort de nm peut vous montrer :

$ 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 va effectivement aider.Vous pouvez utiliser le -S option;qui montrera les tailles de toutes les sections. .text est (la majeure partie de) votre code exécutable. .data et .rodata sont vos données statiques.Il existe également d'autres sections, dont certaines sont utilisées au moment de l'exécution, d'autres uniquement au moment de la liaison.

size -A
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top