一、参考链接:
二、预置条件:
安装软件:windows-10-sdk
下载链接:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/
参数配置:一定要勾选Debugging Tools for Windows
三、操作细节
1)path系统参数修改
由于要用到系统文件,最好在path系统参数增加..\Windows Kits\10\Debuggers\x64路径,便于调用如下程序。
2)编写调用脚本
批处理文件示例:输入参数有两个:程序名称 pdb路径
rem 使用umdh前需要使用gflags创建用户模式堆栈跟踪:
gflags.exe /i %1.exe +ust
rem 设置应用的pdb路径;windows系统的pdb指定官网下载链接
set _NT_SYMBOL_PATH=%2;srv*c:\mycache*https://msdl.microsoft.com/download/symbols
rem 运行程序,并第一次追踪
umdh.exe -pn:%1.exe -f:%1_1.txt
rem 睡一段时间
sleep 20
rem 运行程序,并第二次追踪
umdh.exe -pn:%1.exe -f:%1_2.txt
rem 输出两次比较文件的结果
umdh.exe %1_1.txt %1_2.txt -f:%1_result.txt
rem 给程序关闭追踪
gflags.exe /i %1.exe -ust
四、原理分析
此功能相当于给程序运行期间的内存使用情况拍快照。程序运行期间多次拍摄内存使用情况快照,然后对比不同时期内存的变化情况,就可以看出哪里有内存使用异常。