使用Windbg-UMDH定位内存上涨

当测试到程序发生了内存上涨问题后,

第一步,使用VMMap确定内存上涨时涨在了哪里?


第二步,如果是涨在了Heap上,使用Windbg的UMDH来抓取程序的执行片段内存堆栈分配情况

        1. 程序启动稳定后第一次抓取内存

        2. 程序明显上涨后抓取第二次内存,建议上涨80~100M时抓取。

        3. 两次内存做比较,查看明显上涨的调用栈是哪里(第一个调用栈),就可以定位出主要上涨原因。

UMDH的使用:

1. 运行cmd,转至Windbg目录

2. 设置符号路径:set _NT_SYMBOL_PATH=SRV*D:\SysSymbols*http://msdl.microsoft.com/download/symbols;添加自己程序的pdb路径

3. 开启堆转储: gflags -i TestMemory.exe +ust

4. 运行TestMemory.exe

5. 记录堆使用情况: umdh -p:[TestMemory进行ID]  -f:[记录的文件名]  如:umdh -p:2055 -f:test1.txt

6. 待运行一段时间后,再次记录堆使用情况,如:umdh -p:2055 -f:test2.txt

7. 比较堆变化: umdh -d test1.txt test2.txt > test_diff.txt

8. 查看test_diff.txt就可以分析两次转储之间堆的上涨情况了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值