【无标题】

windows平台两种内存泄漏分析工具

摘要

C/C++程序员具有直接操作内存的权力,但这也对程序员提出高要求,尤其是要小心内存泄露。可是内存泄漏发生时,也不要怕,windows平台gflags和vs是分析内存泄露的上好工具。

gflags分析内存泄漏

使用步骤

  1. cmd 进入到gflags的文件夹
  2. 设置pdb路径
  3. 设置被监控的程序
  4. 启动软件
  5. 创建快照
  6. 程序运行一段时间
  7. 再次创建快照
  8. 比较两次的差异

实际使用场景

  1. 启动软件
  2. 创建一个启动分析的bat脚本,并运行
cd C:\Program Files (x86)\Debugging Tools for Windows (x86)  //step1
set _NT_SYMBOL_PATH=XXXX  //step2,XXX为exe所在文件夹的路径
gflags -i XXXX.exe +ust  //step3,被监控的软件
umdh -pn:XXXX.exe -f:d:\Snap1.log  //step5, 创建快照
pause
  1. 运行程序使内存增长
  2. 创建一个结束分析的bat脚本
cd C:\Program Files (x86)\Debugging Tools for Windows (x86)  //step1
set _NT_SYMBOL_PATH=XXXX  //step2,XXX为exe所在文件夹的路径
umdh -pn:XXXX.exe -f:d:\Snap2.log  //step7, 再次创建快照
umdh -d D:\Snap1.log D:\Snap2.log -f:d:\result.txt //step8,分析两次差异,结果在result.txt中
pause
  1. 结果分析
    打开result.txt文件
    在这里插入图片描述
  • 1292 : 两次内存快照之间的内存泄露值
  • 1748 : 第二次快照时内存块大小
  • 456 : 第一次快照时内存块大小
  • 17 : 两次快照间内存被分配的次数
  • 23: 第二次快照时内存分配的次数
  • 6: 第一次快照时内存分配的次数
  • d:\memoryleak\main.cpp, 13 : 内存泄露代码所在文件及其行数,确系源码分配内存的位置

vs分析内存泄漏

操作步骤

  1. 打开性能探测器
    在这里插入图片描述

  2. 勾选内存使用率

  3. 开启性能探测器
    在这里插入图片描述

  4. 截取快照

  5. 运行一段时间再次截取快照

  6. 第5步可以重复多次

  7. 停止收集
    在这里插入图片描述

  8. 查看分析报告
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值