2014년 11월 25일 화요일

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 툴에서 불러오면 예쁘게 그려준다.