如何检测内存是否泄漏:
准备
需要准备文件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进行单步提示,这样可以确认是那块出现了泄漏。
②网上说有的获得了符号,是可以确认到具体行的。但是我这里没有测试成功,所以是通过但不调试确认的。
|
|