使用 gperftools 进行 C++ 代码分析

1 安装

 

1.1 基础软件

 

在命令行中通过 apt 安装 autoconf、automake、libtool:

sudo apt install autoconf automake libtool

1.2 libunwind

 

gperftools 在 64 位操作系统下需要 libunwind 库的支持,libunwind 提供了可用于分析程序调用栈的 API,进行安装:

cd ~
wgethttps://github.com/libunwind/libunwind/releases/download/v1.6.2/libunwind-1.6.tar.gz
tar -zxvf libunwind-1.6.2.tar.gz
cd libunwind-1.6.2
./configure
make -j8
sudo make install
cd ~
rm -rf libunwind-1.6.2.tar.gz libunwind-1.6.2

1.3 graphviz

 

gperftools 使用 graphviz 将代码性能分析结果进行图形化显示。graphviz 是一个由 AT&T 实验室开发的开源工具包,用于绘制 DOT 语言脚本描述的图形,ubuntu 可通过 apt 直接安装:

sudo apt install graphviz

1.4 gperftools

 

gperftools 可直接执行下述命令行进行安装:

cd ~

wgethttps://github.com/gperftools/gperftools/releases/download/gperftools10/gperftools-2.10.tar.gz

tar -zxvf gperftools-2.10.tar.gz

cd gperftools-2.10

 ./configure

make -j8

sudo make install

cd ~

rm -rf gperftools-2.10.tar.gz gperftools-2.10

2.使用

https://blog.shipengx.com/download/cpp_demo.zip C++ 工程 Demo 可点击这里下载

2.1 代码插桩

 

在使用 gperftools 进行代码性能分析前,需要进行代码插桩:

 

插入头文件:

#include 

分析的代码块前插入 Profiler 开始语句:

ProfilerStart("file_name.prof");

file_name.prof 表示 .prof 文件的文件名。

 

在待分析的代码块后插入 Profiler 结束语句:

ProfilerStop();

完整的插桩代码:

#include "inc/func.hpp"

#include 



int main()

{

    ProfilerStart("cpp_demo_perf.prof");



    PrintString("This's a demo.");

    Func();



    ProfilerStop();



    return 0;

}

 

 

你可能感兴趣的:(运维,c++,开发语言,linux)