C++程序内存泄漏检查

一、在windows平台上面:

以前我都是用purify,因为没有正版的,很是麻烦,后来我开始用windows自带的umdh,也很好用:

http://support.microsoft.com/kb/268343/en-us

摘要一下步骤如下:

1、gflags -i <application name> +ust

注:得先把gflags和umdh的路径加入到Path中,默认为:C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64(我用的是Win64的系统,x86的自己改下)。

2、启动需要检查的程序,并获得其进程号(假设为124);

3、获取heap dump:

umdh -p:124 -f:heapdump_1.log

跑了一段时间之后,再dump一次:

umdh -p:124 -f:heapdump_2.log

4、比较两次生成的dump:

UMDH heapdump_1.log heapdump_2.log > cmp12.txt

然后检查cmp12.txt即可。检查该文件需要对程序的了解和一些检查内存泄漏的经验。有的时候会有误报,总的来说抓大放小,检查那些持续性的泄漏,而不是类似于static对象的一次性的泄漏。这些原则同样适用于valgrind。


二、在linux平台上面:

用Valgrind: http://valgrind.org/

这是个相当好的工具。linux平台开发真是相当的方便呢。

valgrind --track-origins=yes --leak-check=full --log-file=valgrind.log --error-limit=no -v <executable path> &



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值