2011-10-13 8 views
6

내 C++ 프로그램은 많은 CPU를 소비하므로 더 많이 실행됩니다. 나는 CPU 사용량을 프로파일 구글 성능 도구를 사용하고, 이것이 내가 가진 무엇 :Google perf 도구의 주소를 해석하는 방법 CPU 프로파일 러

(pprof) top 
Total: 1343 samples 
    1330 99.0% 99.0%  1330 99.0% 0x0000000801dcb11c 
     7 0.5% 99.6%  7 0.5% 0x0000000801dcb11e 
     4 0.3% 99.9%  4 0.3% program::threadWorker 
     1 0.1% 99.9%  1 0.1% 0x0000000801dcb110 
     1 0.1% 100.0%  1 0.1% 0x00007fffffffffc0 

단, 1 여기에 표시된 5 개 과정에서 실제 함수 이름이다; 나머지는 주소입니다. 이 주소들이 무엇에 속하는 지 어떻게 알 수 있습니까?

편집 (물론, 나는 위의 첫 번째 주소에 가장 관심) : 이것은 프로파일 러를 실행하는 방법입니다

env CPUPROFILE=prof.out ./a.out 
[kill program] 

pprof ./a.out prof.out 

또한, 나는 코드를 검사하여 근본 원인을 발견했다. 그러나 프로파일 러가 주소가 아닌 범인 기능을 정확하게 지적하는 것이 여전히 유용 할 것입니다.

답변

2

google-pprof에서 결과를로드 할 때 실행 파일을 지정하지 않았습니까?

나는로 실행 :

$ google-pprof executable /tmp/executable.hprof --text | less 

과 잘 함수 이름을 볼 수 있습니다. 또는 google-pprof를 실행할 때 경로가 아닌 공유 라이브러리에 이러한 메소드가 있습니까?

+0

프로파일 러를 실행하는 방법을 포함하도록 내 질문을 편집했습니다. 나는 범용 함수를 발견했다.이 함수는 공유 라이브러리가 아니라 같은 파일에 선언되어있다. – jules

+0

@jules : 프로파일 러가 범인 기능을 찾는 데 도움이 되었습니까? –

+0

@Mike Dunlavey : 아니오, 내 프로그램이 다소 적기 때문에 코드 검사로 찾았습니다. – jules