示例 10:检测进程中的堆内存泄漏
此示例使用 GFlags 和用户模式转储堆 (UMDH,umdh.exe) ,这是 Microsoft Windows 调试工具中包含的工具。
检测notepad.exe中的堆内存泄漏
为notepad.exe映像文件设置 “创建用户模式堆栈跟踪数据库 ” (ust) 标志。
以下命令使用 GFlags 设置 创建用户模式堆栈跟踪数据库 标志。 它使用 /i 参数来标识图像文件和 标志的 ust 缩写。
gflags /i Notepad.exe +ust
此命令的结果是为记事本进程的所有新实例创建用户模式堆栈跟踪。
设置符号文件路径。
以下命令创建一个环境变量,用于存储符号文件目录的路径:
set _NT_SYMBOL_PATH=C:\Windows\symbols
启动记事本。
(记事本进程的 PID) 查找进程标识符。
可以从任务管理器或任务列表 (tasklist.exe) (Windows XP Professional 和 Windows Server 2003 操作系统中包含的工具)中找到任何正在运行的进程 PID。 在此示例中,记事本 PID 为 1228。
运行 UMDH。
以下命令运行 UMDH (umdh.exe) 。 它使用 -p: 参数指定在此示例中为 1228 的 PID。 它使用 /f: 参数指定堆转储(notepad.dmp)的输出文件的名称和位置。
umdh -p:1228 -f:notepad.dmp
作为响应,UMDH 将所有活动堆的完整转储写入 notepad.dmp 文件。