리눅스:프로그램의 코드 및 정적 데이터 크기를 추정하는 가장 좋은 방법은 무엇입니까?

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

다른 팁

공간 감소를 위해 집중할 함수와 데이터 구조를 식별하는 다음 단계를 수행하려면 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top