Linux:Каков наилучший способ оценить размер кода и статических данных программы?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Я хочу иметь возможность получить оценку того, сколько кода и статических данных используется моей программой на C ++?

Есть ли способ выяснить это, просмотрев исполняемый файл или объектные файлы?Или, может быть, что-то, что я могу сделать во время выполнения?

Помогут ли objdump и readelf?

Это было полезно?

Решение

"размер" - это традиционный инструмент.У "readelf" есть множество опций.

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

Другие советы

Если вы хотите сделать следующий шаг по определению функций и структур данных, на которых нужно сосредоточиться для уменьшения занимаемой площади, аргумент --size-sort для nm может показать вам:

$ 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 действительно, поможет.Вы можете использовать -S вариант;это покажет размеры всех секций. .text является (основной частью) вашего исполняемого кода. .data и .rodata это ваши статические данные.Существуют и другие разделы, некоторые из которых используются во время выполнения, другие - только во время соединения.

size -A
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top