Google Perftools系列相关+valgrind

从主页http://code.google.com/p/google-perftools/downloads/list下载源码包,解压后使用命令序列./configure;make;make install安装。如果make报错,请使用./configure --enable-frame-pointers从新来过。默认安装路径为/usr/local/,头文件和库文件分别在/usr/local/inlcude/google/和/usr/local/lib/下。需要设置环境变量export LD_LIBRARAY_PATH=/usr/local/lib。跟valgrind的profiler工具的不同之处是,Google perftools使用在源程序中插入profiler代码的方式,而不是valgrind的虚拟机方式,所以Google perftools以库文件的形式提供了一系列函数接口。为了使用图形化结果还需要安装gv,可使用apt-get安装:sudo apt-get install gv。 

    Google Perftools包括三个工具,三个工具均支持多线程程序

能解决CPU性能分析,内存泄露,内存分配大小的问题。

其他的自行网上搜索,只说自己有困惑的地方:

1.编译,要加上tcmalloc,例如:g++ -o testCode2 -ltcmalloc -g testCode2.cpp

2.执行,

env LD_PRELOAD="/usr/local/lib/libtcmalloc.so" HEAPPROFILE=/data/ltd/memcheck/profileData/testData.log ./testCode2

3.查看文件,pprof --text /data/ltd/memcheck/testCode/testCode2 testData.log.0002.heap

4.对比快照文件,pprof --text /data/liutudeng/memcheck/testCode/testCode1 --base=testData.log.0001.heap testData.log.0003.heap

5.heap leak用法类似:(1).执行:env LD_PRELOAD="/usr/local/lib/libtcmalloc.so" HEAPCHECK=normal ./testCode1,(2).查看文件:pprof ./testCode1 "test.log.0002.heap" --inuse_objects --lines --heapcheck  --edgefraction=1e-10 --nodefraction=1e-10 --text,中间那一串东西是在执行env时发现没准确定位,里面给的提示,但是用的是text来显示

6.此外,为了生成明确的堆栈,编译优化建议不要开,O0就好,最好再加上编译选项 -fno-omit-frame-pointer 这样能更好的显示出完整堆栈,定位起问题来会更加的轻松。

7..heap文件本身的东西都是一堆抽象的数字,没什么内容,猜测pprof命令里面之所以要用到执行文件,是因为要用到执行文件的符号表等等东西,这样才能把堆栈函数名等等打印出来

8.pprof的两个选项gv和ps,都跟Postscript相关,但是gv是要显示出来,而ps是输出到stdout,如果linux下不能执行gv显示(非图形界面),可以先执行gv,输出到文件里面,再在windows上显示出来,在Windows上要先安装PS Viewer – 用于查看PostScript (.ps) file格式的软件

pprof --ps /data/xxx/server/gg_with_profile_heap test.log.0008.heap > log8_8.ps

还有个神器valgrind也不错,能查看内存泄露,以及未初始化的变量之类的

其余的别人推荐的内存相关的工具:memwatch,asan。。。。。

参考资料:

 google heap profiler内存管理工具小试 https://blog.csdn.net/cica0cica/article/details/76919381

使用heap;profiler进行内存占用分析 https://www.cnblogs.com/minglee/p/10124174.html

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值