UMDH

Umdh 是 Debugging Tools for Windows 里的一个工具,下载地址 http://msdn.microsoft.com/en-US/windows/hardware/gg454513,通过分析比较进程的Heap Stack Trace信息来发现内存泄漏的。

设置Umdh

1. 设置 _NT_SYMBOL_PATH环境变量,例如用命令行: set _NT_SYMBOL_PATH = c:WindowsSymbols。把你自己程序的Symbol files (.pdb)文件放在跟你执行文件的同一个目录,或者添加到_NT_SYMBOL_PATH环境变量里面。

2. 若要生成转储文件的堆分配,必须使用 Gflags.exe 实用程序,它也是包含在 Windows 调试工具产品,让操作系统知道您想要跟踪分配的内核。假设您要为 Notepad.exe 转储 heap(s) 内容。必须先启用要测试的应用程序的堆栈跟踪购置。默认情况下,不启用此功能。要启用此功能的命令如下所示:gflags-i notepad.exe +ust

启动应用程序,比如notepad,假设notepad的PID为1234,可以使用 UMDH 来获取堆转储,用下面的命令:umdh -p:1234 -f:notepad1234old.log

做一些可能导致内存泄漏的操作,再运行一次umdh命令:umdh -p:1234 -f:notepad1234new.log
运行UMDH notepad1234old.log notepad1234new.log > cmp1234.txt比较umdh日志,可以从中找出那些代码分配了新的内存,没有被释放。
 
 
原文地址:https://www.cnblogs.com/lilideng/p/UMDH.html