Linux: Как лучше всего оценить код и размер статических данных программы? - PullRequest
2 голосов
/ 30 августа 2008

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

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

Поможет ли objdump & readelf?

Ответы [ 4 ]

5 голосов
/ 30 августа 2008

«размер» - традиционный инструмент. У "readelf" есть много опций.

$ size /bin/sh
   text    data     bss     dec     hex filename
 712739   37524   21832  772095   bc7ff /bin/sh
2 голосов
/ 06 сентября 2008

Если вы хотите сделать следующий шаг по определению функций и структур данных, на которых следует сосредоточиться для уменьшения площади, аргумент --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
1 голос
/ 20 сентября 2008
size -A
1 голос
/ 30 августа 2008

readelf действительно поможет. Вы можете использовать опцию -S; это покажет размеры всех разделов. .text является (основной частью) вашего исполняемого кода. .data и .rodata - ваши статические данные. Есть и другие разделы, некоторые из которых используются во время выполнения, другие только во время ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...