交叉编译 gperftools


0. 源码编译

# https://github.com/gperftools/gperftools/releases/tag/gperftools-2.9.1
mkdir build && cd build
CC=arm-fullhanv3-linux-uclibcgnueabi-gcc ../configure --prefix=/home/hxf0223/tmp/gperftools/dp2000/ --host=arm-fullhanv3-linux-uclibcgnueabi --enable-frame-pointers
make -j

生成libprofiler.so, libtcmalloc.so等,以及pprof,用于转换.prof到pdf等格式。
ubuntu x64下编译需先安装libunwind:

wget https://github.com/libunwind/libunwind/releases/download/v1.6.2/libunwind-1.6.2.tar.gz
./configure
make -j && sudo make install

1. 配置项

  • 环境变量:CPUPROFILE_FREQUENCY=xxx,单位Hz。

2. 在项目中使用ProfilerStart

链接使用libprofiler.so, libtcmalloc.so,在代码中添加ProfilerStart, ProfilerStop。

#include 

ProfilerStart("test_capture.prof");
// 待分析代码
ProfilerStop();

运行编译的可执行程序,得到test_capture.prof文件。随后从.prof文件生成报告。

# 生成pdf格式的性能报告(层次调用节点有向图)
pprof  ./my_exe test_capture.prof --pdf > prof.pdf

3. 参考

  • gperftools github io
  • Analyze program performance with gperftools

4. 其他

  • Linux Trace Tool NG