gisdemo

分享,更是学习

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

UMDH(用户模式转储堆user-mode dump heap)是一个用于分析进程windows堆分配的工具。

可以用于分析进程的内存泄露问题。

使用 UMDH 请参见内存泄漏前,请执行以下步骤:

1、安装 UMDH 实用程序。

2、设置系统 PATH 环境变量包含 UMDH 的安装的文件夹。

3、请将 _NT_SYMBOL_PATH 环境变量设置为 Microsoft 符号服务器的路径,以便 UMDH 可以找到调试符号文件。按以下设置,会自动下载操作系统对应的符号文件

set _NT_SYMBOL_PATH=

"SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;d:\myapp\bin"

d:\myapp\bin为PDB所在目录

若要生成堆分配的转储文件,必须使用 Gflags.exe 实用程序,它也是包含在 Windows 调试工具产品,让操作系统知道您想要跟踪分配的内核。

gflags -i notepad.exe +ust

 

完成后,可以利用UMDH工作生成转储文件

Umdh -p:PID -f:"d:\old.log"

Umdh -p:PID -f:"d:\new.log"

umdh.exe "D:\old.log" "D:\new.log" -f:"D:\result.log"

 

打开D:\result.log 文件,可以看到类似如

// + BYTES_DELTA (NEW_BYTES - OLD_BYTES) NEW_COUNT allocs BackTrace TRACEID

// + COUNT_DELTA (NEW_COUNT - OLD_COUNT) BackTrace TRACEID allocations

// ... 调用堆栈 ...

 

// where:

//

// BYTES_DELTA - 前后两个文件间增加的字节

// NEW_BYTES - 后一个文件中字节数

// OLD_BYTES - 前一个文件中字节数

// COUNT_DELTA - 前后两个文件间增加的分配次数

// NEW_COUNT - 后一个文件中分配的次数

// OLD_COUNT - 前一个文件中的分配次数

// TRACEID - 栈标记,可以用于在UMDH 文件中查找分配定位

 

http://support.microsoft.com/kb/268343

posted on 2013-12-18 19:53  gisdemo  阅读(717)  评论(0编辑  收藏  举报