使用windbg检测内存泄漏

本文介绍了如何利用Windbg工具检测C++程序的内存泄漏问题。通过配置symbol文件路径,添加pdb文件,使用Gflags设置user stack trace,然后在Windbg中进行调试,观察heap状态变化,定位内存泄漏的堆和分配次数最多的内存块,最终找到可能引发内存泄漏的函数。
摘要由CSDN通过智能技术生成


缘起

作为C++程序员,检测内存泄漏是非常痛苦的事情。尤其是看着程序的内存在一直增长,你却无能为力。此时,windbg可以用来检测内存泄漏。


配置windbg

  1.  配置symbol文件路径: SRV*d:\symbols*http://msdl.microsoft.com/download/symbols”.
  2.  增加测试程序test.exe的pdb 文件到symbol文件路径
  3.  采用Gflags.exe,增加userstack trace到测试程序leak.exe中。  gflags.exe /i test.exe +ust

开始调试

1.      打开windbg,点击’attach to process’,挂载上test.exe。

2.      敲入命令>!heap –s

NtGlobalFlag enables following debuggingaids for new heaps:

 Heap     Flags   Reserv Commit  Virt   Free List   UCR  Virt Lock  Fast

                    (k)    (k)    (k)     (k) length      blocks cont. heap

-----------------------------------------------------------------------------

02e90000 08000002    1024   408   1024     31   16     1    0     0   LFH

02e00000 08001002    1088   136   1088     18    4     2    0     0   LFH

04870000 08001002     256    20    256      1    2     1    0     0     

00300000 08001002    3136  1308   3136     19   23     3    0     0   LFH

04840000 08001002      64    12     64      3    2     1    0      0     

04750000 08001002     256     4    256      1    1     1    0     0     

05740000 0

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值