Linux:Qual è il modo migliore per stimare la dimensione del codice e dei dati statici del programma?

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

  •  09-06-2019
  •  | 
  •  

Domanda

Voglio essere in grado di ottenere una stima della quantità di codice e dati statici utilizzati dal mio programma C++?

C'è un modo per scoprirlo guardando i file eseguibili o oggetto?O forse qualcosa che posso fare in fase di esecuzione?

objdump e readelf aiuteranno?

È stato utile?

Soluzione

"dimensione" è lo strumento tradizionale."readelf" ha molte opzioni.

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

Altri suggerimenti

Se vuoi fare il passo successivo e identificare le funzioni e le strutture dati su cui concentrarti per ridurre l'impronta, l'argomento --size-sort di nm può mostrarti:

$ 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 aiuterà davvero.Puoi usare il -S opzione;che mostrerà le dimensioni di tutte le sezioni. .text è (la maggior parte del) codice eseguibile. .data E .rodata sono i tuoi dati statici.Ci sono anche altre sezioni, alcune delle quali vengono utilizzate in fase di esecuzione, altre solo in fase di collegamento.

size -A
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top