VMMAP定位内存泄露

1.启动VMMAP,配置运行程序pdb位置:Options->Configure Symbols
VMMAP定位内存泄露_第1张图片
2.通过VMMAP,启动应用程序:File->Select Process
VMMAP定位内存泄露_第2张图片
3.分析应用程序堆数据
VMMAP定位内存泄露_第3张图片
注意:如果内存泄露随着时间推移,肯定相同的内存会越来越多,此时我们可以通过调用堆栈分析,如下
VMMAP定位内存泄露_第4张图片
4.如果通过堆栈还是比较难以定位,或者VMMAP崩溃了,那么只能结合VS的内存窗口数据一起查看数据了,然后根据数据内容分析代码(这可能就要求对代码熟悉程度非常高了)大概位置,进行问题解决。案例分析:
VMMAP定位内存泄露_第5张图片
VS断点之后,查看当前VMMAP指向的内存数据:
VMMAP定位内存泄露_第6张图片
所以我们在代码表接口打断点并且分析数据,如下:
VMMAP定位内存泄露_第7张图片
至此内存泄露定位成功。

你可能感兴趣的:(C++,随笔)