리눅스:프로그램의 코드 및 정적 데이터 크기를 추정하는 가장 좋은 방법은 무엇입니까?
문제
내 C++ 프로그램에서 사용되는 코드 및 정적 데이터의 양을 추정하고 싶습니다.
실행 파일이나 개체 파일을 보고 이를 알아낼 수 있는 방법이 있습니까?아니면 런타임에 할 수 있는 일이 있을까요?
objdump 및 readelf가 도움이 될까요?
해결책
"크기"는 전통적인 도구입니다."readelf"에는 많은 옵션이 있습니다.
$ size /bin/sh
text data bss dec hex filename
712739 37524 21832 772095 bc7ff /bin/sh
다른 팁
공간 감소를 위해 집중할 함수와 데이터 구조를 식별하는 다음 단계를 수행하려면 nm에 대한 --size-sort 인수를 사용하여 다음을 표시할 수 있습니다.
$ 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
제휴하지 않습니다 StackOverflow