交叉编译 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