Linux:Qual é a melhor maneira de estimar o código e o tamanho dos dados estáticos do programa?

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

  •  09-06-2019
  •  | 
  •  

Pergunta

Quero obter uma estimativa de quanto código e dados estáticos são usados ​​pelo meu programa C++?

Existe uma maneira de descobrir isso observando os arquivos executáveis ​​ou objetos?Ou talvez algo que eu possa fazer em tempo de execução?

Objdump e readelf ajudarão?

Foi útil?

Solução

"tamanho" é a ferramenta tradicional."readelf" tem muitas opções.

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

Outras dicas

Se você quiser dar o próximo passo na identificação das funções e estruturas de dados nas quais focar na redução da pegada, o argumento --size-sort para nm pode mostrar:

$ 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 realmente ajudará.Você pode usar o -S opção;que mostrará os tamanhos de todas as seções. .text é (a maior parte) o seu código executável. .data e .rodata são seus dados estáticos.Existem outras seções também, algumas das quais são usadas em tempo de execução, outras apenas em tempo de link.

size -A
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top