google-perftools使用

最近需要查看系统的内存泄露相关的,而且可能堆外内存泄露导致,故开始尝试使用google-perftools,准备工作如下:

 

一:下载工具源码包

 

1:首先下载google-perftools包

http://code.google.com/p/google-perftools/downloads/list

 

2:下载libunwind

http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.gz

 

3:下载 dot

http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.28.0.tar.gz

 

4:下载gv

http://ftp.gnu.org/gnu/gv/

 

 

二:编译

 

1:perftools编译

编译的so文件位于 /perftools/.libs 隐藏目录中

ls *.so得到如下so文件

 

libprofiler.so               libtcmalloc_debug.so          libtcmalloc_minimal.so
libtcmalloc_and_profiler.so  libtcmalloc_minimal_debug.so  libtcmalloc.so

 

2:libunwind编译

 

 编译后的so文件位于 libunwind-0.99-beta/src/.libs 目录中

ls *.so.*  得到如下so文件

 

libunwind-setjmp.so.0      libunwind-setjmp.so.0.0.0T  libunwind.so.7.0.0     libunwind-x86_64.so.7.0.0
libunwind-setjmp.so.0.0.0  libunwind.so.7              libunwind-x86_64.so.7  libunwind-x86_64.so.7.0.0T
 

 

编译后的 prrof位于 google-perftools-1.8/src目录中,是一个shell脚本文件

 

3:dot编译

 

dot 位于 graphviz-2.28.0/cmd中

 

三:准备配置使用google-perftools

 

具体见以下三篇文档

 

http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html

 

http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html

 

http://google-perftools.googlecode.com/svn/trunk/doc/heapprofile.html

 

针对遇到的问题做个总结:

 

make的时候 请使用j选项 ,例如make -j 10 同时开启10个任务来make,这样在多核上编译会快很多

 

如果遇到某个so文件所依赖的so在系统中找不到,但是自己的环境里有的,可以直接加在preload上,用冒号分开,例如

 

LD_PRELOAD=/home/dikar/google-perf/google-perftools-1.8/.libs/libtcmalloc_and_profiler.so:/home/dikar/google-per
f/libunwind-0.99-beta/src/.libs/libunwind.so.7
 

用env设置变量参数时,不要替换成export,否则这里会有问题

 

使用pprof时,如果指定的某些依赖的bin不存在,可以直接修改pprof脚本,自己定制哪些bin所在的路径而不依赖默认配置。

 

你可能感兴趣的:(Google)