使用umdh检测内存泄露

  使用WinDbg的工具umdh可以检测内存泄露,写了个批处理《AnalyzeMemoryLeak.bat》,方便调用,使用时可能需要先修改批处理文件中的程序名和路径。记录下来备忘。

@echo off

set imagename=Console.exe
set pdbpath=D:\VC6\Console\Debug;

setlocal enabledelayedexpansion
set currentdir=%~dp0
cd /d "C:\Program Files (x86)\Debugging Tools for Windows (x86)"
gflags /i %imagename% +ust
set _NT_SYMBOL_PATH=srv*downstreamstore*http://msdl.microsoft.com/download/symbols;%pdbpath%;
echo _NT_SYMBOL_PATH=%_NT_SYMBOL_PATH%
echo 打开应用程序,并运行一段时间,然后按任意键收集第一个内存日志《1.log》...
pause>nul
echo %date% %time% 程序状态:
tasklist /FI "IMAGENAME eq %imagename%"
set /P pid=输入应用程序的PID:
umdh -p:%pid% -f:"%currentdir%1.log"
echo 已生成第一个内存日志《%currentdir%1.log》
echo 继续运行应用程序,然后按B键收集第二个内存日志《2.log》...

:LoopTaskList

echo %date% %time% 程序状态:
tasklist /FI "PID eq %pid%"
choice /t 1 /n /c wb /d w>nul
if %errorlevel%==2 goto :LoopTaskListOut
set /a line=5*10+2
set "k="
for /l %%a in (1,1,%line%) do set "k=!k!"
2>nul echo 	!k!
goto :LoopTaskList

:LoopTaskListOut

umdh -p:%pid% -f:"%currentdir%2.log"
echo 已生成第二个内存日志《%currentdir%2.log》
echo 正在生成内存对比日志《12.log》...
umdh -d -v "%currentdir%1.log" "%currentdir%2.log" > "%currentdir%12.log"
start "" "%currentdir%12.log"
echo 已生成内存对比日志《%currentdir%12.log》,按任意键退出.
pause>nul




你可能感兴趣的:(使用umdh检测内存泄露)