기본 콘텐츠로 건너뛰기

라벨이 valgrind인 게시물 표시

Valgrind를 이용한 프로파일링

옛 날에는 gcc 옵션에 -pg 붙여서 컴파일하고, 실행이 끝나면 만들어진 gmon.out과 gprof를 이용해서 프로파일링을 했더랬지. Valgrind와 서브 툴을 이용하면 비슷한 작업을 할 수 있는데, kcachegrind라는 GUI툴을 이용하면 그림까지 잘 그려준다. (물론 기존 gprof를 이용해서 그림을 그리는 방법이 없는 것은 아니다) 참조: 6. Callgrind: a call-graph generating cache and branch prediction profiler valgrind --tool=callgrind 로 프로그램을 실행하고 결과로 나온 callgrind.out.[PID] 프로파일링 파일을 만들어낸다. $ valgrind --tool=callgrind ./my_example arg1 arg2 arg3... (running...) $ ls my_example callgrind.out.3321 그리고 kcachegrind 툴에서 불러오면 예쁘게 그려준다.

부하가 걸리는 함수 찾기 - callgrind

valgrind에 여러 도구 가운데 callgrind 라는 녀석이 있다. 함수 호출 회수와 걸린 시간 등을 긁어주는 프로파일러이다. 사용법은 무지 간단하다. $ valgrind --tool=callgrind [프로그램] [프로그램 인자] 이렇게 하면 callgrind.out.[PID]로 중간 파일이 뛰쳐 나온다. 이걸 callgrind_annotate 같은 텍스트 툴로 보면 대략 눈 많이 아프더라. KDE용 프로그램 가운데 KCachegrind 라는 녀석이 있다. valgrind-callgrind 같은 패키지 깔면 같이 깔리는 기특한 녀석이다. KCachegrind를 실행하고 위에서 나온 callgrind.out 파일을 열면 함수별 부하가 눈에 보기 편하게 나온다. (내부적으로 dot을 이용하는 모양) 덧글: 프로그램은 -pg 옵션은 필요하지 않으며, -g 옵션은 해줘야 쓸만한 정보가 뛰쳐나온다. 원본 위치: http://purewell.egloos.com/3410603