Gprof 사용법

KiJeong·2021년 11월 23일
1

Embedded

목록 보기
1/2

목적: 단말에서 gprof 를 사용해서 결과를 뽑아내고 싶다.

1. Docker에 Gprof cross compile 환경 구성

#gprof
RUN wget -O /workdir/binutils-2.32.tar.gz "https://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.gz" \
    && tar xvzf /workdir/binutils-2.32.tar.gz -C /workdir \
    && cd /workdir/binutils-2.32 \
    && mkdir build \
    && cd build \
    && ../configure --host=${TARGET} --prefix=${PREFIX} \
    && make

2. Docker에 들어가서, gprof 바이너리를 단말에 넣음

scp -P 126 /workdir/binutils-2.32/build/gprof/gprof root@192.168.23.54:~/root/

3. cmake 시 gprof 옵션 주기

cmake \
    -D CMAKE_PREFIX_PATH=${PREFIX} \
    -D TARGET=${TARGET} \
    -D CMAKE_C_STANDARD_INCLUDE_DIRECTORIES=${SDK_TARGET_SYSROOT}/include \
    -D CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=${SDK_TARGET_SYSROOT}/include \
    -D CMAKE_LIBRARY_PATH=${SDK_TARGET_SYSROOT} \
    -D GPROF_OPTION=ON \
    /workdir/project2016

4. build 후 단말에 테스트 실행파일 삽입하여, 테스트 단말에서 테스트 실행

root@ha:~/root# ./test --gtest_filter=TestVerify.Test

5. 실행결과로 gmon.out 파일이 생성됨을 확인

6. gprof 실행하여 분석된 결과를 확인

  • -q옵션: graph를 시작할 function (기준이되는 function)
  • -b옵션: flat data는 제외하고 graph call 만 보겠다.
./gprof -qFunctionName -b test gmon.out > result.txt

0개의 댓글