MacOSX에서 일부 C++ 프로그램의 프로필을 작성하려고합니다. 그래서 google-perftools
을 작성하고, -g
컴파일러 플래그로 MacPorts g ++ 4.7을 사용하여 컴파일하고, libprofiler
에 링크 된 프로그램을 작성했습니다. 그럼 난 실행 : MacOSX의 Google Perftools CPU 프로파일 러의 행 번호
CPUPROFILE=cpu.profile ./a.out
는 다음 나는 출력을 생성하는 pprof를 실행 :
perftools이 이름을 작동하려면 주소를 변환하지 않는 것 같습니다
[hidden ~]$ pprof --text ./a.out cpu.profile
Using local file ./a.out.
Using local file cpu.profile.
Removing __sigtramp from all stack traces.
Total: 282 samples
107 37.9% 37.9% 107 37.9% 0x000000010d72229e
16 5.7% 43.6% 16 5.7% 0x000000010d721a5f
12 4.3% 47.9% 12 4.3% 0x000000010d721de8
11 3.9% 51.8% 11 3.9% 0x000000010d721a4e
9 3.2% 55.0% 9 3.2% 0x000000010d721e13
8 2.8% 57.8% 8 2.8% 0x000000010d721a64
7 2.5% 60.3% 7 2.5% 0x000000010d7222f0
6 2.1% 62.4% 6 2.1% 0x000000010d721a4c
6 2.1% 64.5% 6 2.1% 0x000000010d721b1f
6 2.1% 66.7% 6 2.1% 0x000000010d721e0c
5 1.8% 68.4% 5 1.8% 0x000000010d721fba
......
.
내가 누락 된 부분을 아는 사람이 있습니까? 프로파일 러가 올바른 결과를 생성하도록하려면 어떻게해야합니까?
EDIT : 추가 정보 : pprof 또는 google-perftools의 문제는 아니지만 Instrument.app도 줄 번호 대신 주소를 표시하기 때문에 gcc 또는 macosx와 같은 것입니다. Mac OS X에서 디버그 기호가 작동하는 방식에 익숙하지 않아서 gcc 나 Mac OS X에서 버그가되는 대신 누락 된 것으로 생각합니다. 디버그 정보 작동 방법에 대한 힌트를 제공 할 수 있는지 궁금합니다. Mac OS X 용
"프로필을 일부 C++ 프로그램으로 보내려고합니다."그런데 왜이 질문을 C로 태그합니까? –
이 문제는 C++뿐만 아니라 C에만 국한된 것이 아닙니다. –
OS X dev 또는 googleperf에 익숙하지 않지만 이전에 프로파일 링 라이브러리를 사용했고 디버깅을 위해 -g 플래그를 사용했습니다. 컴파일러 및 링커에 -p 플래그를 추가하여 프로파일 링 세부 사항을 얻으십시오. – fduff