首页 > 代码库 > C++程序内存泄漏检查
C++程序内存泄漏检查
一、在windows平台上面:
以前我都是用purify,因为没有正版的,很是麻烦。
后来我开始用windows自带的umdh,也很好用:http://support.microsoft.com/kb/268343/en-us
摘要一下步骤如下:
1、准备工作:
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> &
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。