一:安装windbg
- windbg同级目录下有gflags.exe
二:cmd进入gflags.exe所在文件夹
- 搜索gflags.exe所在文件夹
- 打开cmd进入gflags.exe所在文件夹
cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
三:设置符号文件路径环境变量
- 设置符号文件(pdb文件)路径到环境变量_NT_SYMBOL_PATH
Set _NT_SYMBOL_PATH=E:\21杂项\DemoProject\GflagsDemo\GflagsDemo\Debug
四:捕获内存快照
- 设置被监控的程序
gflags.exe /I GflagsDemo.exe +ust
- 启动程序
运行GflagsDemo.exe
- 利用umdh创建heap快照
umdh.exe -pn:GflagsDemo.exe -f:D:\log_11.txt
观察程序虚拟内存,出现内存明显增长时,捕获第二次快照
umdh.exe -pn:GflagsDemo.exe -f:D:\log_12.txt
- 分析两次快照差异
umdh.exe D:\log_11.txt D:\log_12.txt -f:D:\log_r1.txt
五:分析 log_r1.txt文件
1)9934 : 两次内存快照之间的内存泄露值
2)121d8 : 第二次快照时内存块大小
3)88a4 : 第一次快照时内存块大小
4)25 : 两次快照间内存被分配的次数
5)46: 第二次快照时内存分配的次数
6)21: 第一次快照时内存分配的次数
7)gflagsdemo.c 13 : 内存泄露代码所在文件及其行数