配色: 字号:
C++检查泄露越界
2016-01-28 | 阅:  转:  |  分享 
  
如何检测内存是否泄漏:

准备

需要准备文件WinDbg.zip进行安装

需要将调试的exe文件已debug模式进行编译,之后将编译后的.pdb文件放到需要调试的目录下。如果有dll文件,或者lib文件,那么也需要把对应的.pdb文件也放到一起。

测试开始:

打开文件“GlobalFlags”按照图示修改







2.已管理员权限启动cmd

3.设置标签gflags

D:\ProgramFiles\DebuggingToolsforWindows(x86)>gflags-iappname.exe+ust????????????????//设置标签flags

gflags-i"C:\Desktop\app\Debug\app.exe"+ust?

出现如图所示表示,设置成功



启动appname.exe

D:\ProgramFiles\DebuggingToolsforWindows(x86)>umdh.exe-p:ProcessID-f:FirstDump.txt??????

6.运行appname.exe中相关的各项工作任务

D:\ProgramFiles\DebuggingToolsforWindows(x86)>umdh.exe-p:ProcessID-f:SecondDump.txt??????

对两次获得状态进行比较

①如果需要输出到文件中,命令为

D:\ProgramFiles\DebuggingToolsforWindows(x86)>umdh.exeFirstDump.txtSecondDump.txt>Result.txt??????????//使用umdb比较dump文件

D:\ProgramFiles\DebuggingToolsforWindows(x86)>umdh.exe-vFirstDump.txtSecondDump.txt

注:

①对于结果的分析,如果发现是自己写的代码中存在内存泄漏。最好使用debug进行单步提示,这样可以确认是那块出现了泄漏。

②网上说有的获得了符号,是可以确认到具体行的。但是我这里没有测试成功,所以是通过但不调试确认的。

献花(0)
+1
(本文系一弯水首藏)