umdh工具使用简介

发布时间 2023-11-21 17:11:01作者: 活着的虫子

UMDH(User-Mode Dump Heap)是一个用于调试和分析内存泄漏的工具。它是微软提供的一种 Windows 调试工具,可帮助开发人员找出应用程序中的内存泄漏问题。

UMDH 的工作原理是基于堆分配的内存跟踪。它通过监测应用程序的堆分配和释放操作,生成一系列堆快照(Heap Snapshot)。这些快照记录了堆上分配的内存块及其相关的调用堆栈信息。通过对比这些堆快照,UMDH 可以确定哪些内存块没有被正确释放,从而帮助开发人员找到内存泄漏的源头。

使用 UMDH 进行调试通常包括以下步骤:

  1. 配置符号路径:确保操作系统和应用程序的符号文件可以在调试过程中正确加载和解析。

  2. 启动目标应用程序:以调试模式启动目标应用程序,并记录其进程 ID。

  3. 收集初始堆快照:使用 UMDH 工具获取应用程序的初始堆快照,这个快照包含了当前分配的所有堆内存块及其相关信息。

  4. 触发内存泄漏场景:执行应用程序的特定功能或场景,可能导致内存泄漏。

  5. 收集第二个堆快照:在内存泄漏场景触发后,再次使用 UMDH 工具获取第二个堆快照。

  6. 对比堆快照:使用 UMDH 工具对比两个堆快照,分析其中的差异。UMDH 可以标识出增加或减少的内存块,帮助开发人员确定哪些内存块没有正确释放。

  7. 查看堆栈信息:UMDH 还提供了对每个内存块关联的调用堆栈信息的支持。开发人员可以分析这些堆栈信息,定位内存泄漏的具体位置和可能的原因。

总的来说,UMDH 是一个强大的工具,可以帮助开发人员识别和调试应用程序中的内存泄漏问题,以便及时解决并优化应用程序的内存管理。

例子

设置环境变量 _NT_SYMBOL_PATH

开启xxxx.exe,获取进程号:25720

开启cmd

gflags.exe /i xxxx.exe +ust

umdh -pn:xxx.exe -f:snap1.log or umdh -p:25720 -f:snap1.log

umdh -d snap1.log snap2.log -f:result.txt