缘起:
作为C++程序员,检测内存泄漏是非常痛苦的事情。尤其是看着程序的内存在一直增长,你却无能为力。此时,windbg可以用来检测内存泄漏。
配置windbg:
- 配置symbol文件路径: “SRV*d:\symbols*http://msdl.microsoft.com/download/symbols”.
- 增加测试程序test.exe的pdb 文件到symbol文件路径
- 采用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