시스템프로그래밍: gprof (gnu 프로파일러) 소개 및 사용법

참고자료:
http://korea.gnu.org/manual/release/gprof/gprof_1.html#SEC1 GNU 코리아 메뉴얼

프로파일링을 통해 얻을 수 있는 점

  • 프로그램에서 어느 부분을 수행하는데 가장 많은 시간을 소비하고 있는지 확인 가능
  • 함수들의 호출 관계 확인 가능
  • 지나칠지도 모를 버그를 발견하는데 도움을 주기도 함
프로파일링 과정
  1. 프로파일링이 가능하도록 컴파일
  2. 프로파일 데이터를 생성하도록 프로그램 실행
  3. 프로파일 데이터를 분석하기 위해 gprof 실행


1. 컴파일

컴파일시 '-pg' 옵션을 추가해야 함


2. 프로그램 실행

프로파일링 옵션으로 컴파일된 실행 프로그램은 "gmon.out" 파일을 만듦
이 파일에 프로파일링 정보를 저장

gmon.out 파일에는 "flat profile"과 call graph가 저장되어 있음
  • flat profile = 각 함수에서 소비된 시간과 함수의 호출 횟수 저장
  • call graph = 함수들 간의 호출 관계와 호출 횟수가 저장
3. gprof 실행
간단하게 정리하면,

gprof [실행파일] [프로파일링 파일] > [결과를 저장할 파일] 으로 요약할 수 있음.
(gprof 다음에 option을 줄 수 있는데 조금 익숙해지면 이것저것 써볼 것)

리눅스 터미널에
gprof mdriver gmon.out > result.txt 를 친 후
vim result.txt 를 쳤을 때 결과



생각보다 간단하네???

프로그램 최적화 하는 단계에서 유용하게 사용할 수 있음!!














댓글

이 블로그의 인기 게시물

칩 설계에 관한 전반적인 내용들

나는 반드시 구글에 들어간다!