TCMalloc源码阅读
2022-02-25 本文已影响0人
zcyzcy
安装gperftools
// 1. 下载gperftools代码
git clone https://github.com/gperftools/gperftools.git
// 2. 执行./autogen.sh
$ ./autogen.sh
// 3. 执行./configure
$ ./configure CXX=/opt/compiler/gcc-8.2/bin/g++ CC=/opt/compiler/gcc-8.2/bin/gcc
// 4.更新环境变量
export CPPFLAGS='-l\usr\local\include'$CPPFLAGS
export LDFLAGS='-L\usr\local\lib'$LDFAGS
// 5. 编译并安装
$ make
$ sudo make install
$ sudo ldconfig
写代码测试内存泄漏
#include <iostream>
int func() {
int *p = new int(10);
return 0;
}
int main() {
std::cout << "memory leak test" << std::endl;
return func();
}
设置PPROF_PATH环境变量,否则无法打印调用栈的符号信息。
export PPROF_PATH=/usr/local/bin/pprof
链接tcmalloc库,编译
/opt/compiler/gcc-8.2/bin/g++ -std=c++0x -g -o memory_leak memory_leak.cpp -ltcmalloc -L/usr/local/lib
如果运行中出现找不到运行时链接库,需要增加运行时库文件搜索路径
image.png
LD_LIBRARY_PATH=/usr/local/lib
echo $LD_LIBRARY_PATH
成功运行:
image.png