목적: 단말에서 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
5. 실행결과로 gmon.out 파일이 생성됨을 확인
6. gprof 실행하여 분석된 결과를 확인
- -q옵션: graph를 시작할 function (기준이되는 function)
- -b옵션: flat data는 제외하고 graph call 만 보겠다.
./gprof -qFunctionName -b test gmon.out > result.txt