C++内存检查工具汇总

目录

gperftools-heap_checker[1]

gperftools-heap_profile[2]

valgrind安装及使用

c++编译器安装

valgrind下载[2]

valgrind安装

valgrind使用


gperftools-heap_checker[1]

检查内存泄漏

使用

1,下载libtcmalloc.so文件并存放

2,将-ltcmalloc加入项目的编译选项来编译你的项目得到my_binary_compiled_with_tcmalloc

-L /usr/lib64 -ltcmalloc

3,把so文件放到你项目运行的地方。
env LD_PRELOAD="/usr/lib/libtcmalloc.so"
env HEAPCHECK=normal /usr/local/bin/my_binary_compiled_with_tcmalloc 

4,注意:如果你的项目是一直运行的状态,需要合理安排主进程的退出,不然会crash。

5,结果分析

pprof --pdf my_binary_compiled_with_tcmalloc  /tmp/mybin.hprof > /tmp/mybin.hprof.pdf

生成的pdf里,黑底是泄漏了,白底是没有泄漏。

gperftools-heap_profile[2]

检查不同函数的内存占比,类似cpu profiler

使用

1,2 同heap checker的前2步

3,运行,这样默认每1M会生成一个文件,测试发现就算加了signal还是会一直生成profile文件?

env LD_PRELOAD="/usr/lib/libtcmalloc.so"

env HEAPPROFILE=/tmp/mybin.hprof /usr/local/bin/my_binary_compiled_with_tcmalloc 

4, 结果分析

pprof --pdf my_binary_compiled_with_tcmalloc  /tmp/mybin.hprof > /tmp/mybin.hprof.pdf

参考link

[1]https://gperftools.github.io/gperftools/heap_checker.html

[2]https://gperftools.github.io/gperftools/heapprofile.html

 

valgrind安装及使用

c++编译器安装

centos7下安装C/C++的编译器gcc和g++,运行了如下两条命令[1]:

  1 yum install gcc

  2 yum install gcc-c++ libstdc++-devel (正确)

 

valgrind下载[2]

http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2

 

valgrind安装

1. tar -jxvf valgrind-3.12.0.tar.bz2

2. cd valgrind-3.12.0

3. ./configure --prefix=/home/valgrind/bin [3]

4. 编译valgrind

make

make install

5. 到这来已经安装成功了,但还不能直接使用,需要创建一个软连接。

cd /usr/bin/

ln -s /home/valgrind/bin/bin/valgrind valgrind

6. 验证

valgrind -h

 

valgrind使用

1. 使用valgrind检查内存

valgrind --log-file=valgrind.log.1 --leak-check=full --tool=memcheck --error-limit=no --show-reachable=yes ./应用程序 &

运行一段时间后查看valgrind.log.1,查看是否有lost内存泄漏问题等。

参考link

[1]https://blog.csdn.net/u011665991/article/details/81502711

[2]https://blog.csdn.net/justheretobe/article/details/52986461

[3]https://blog.csdn.net/ljxfblog/article/details/39209645

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值