一般debug版本能查到最详细。但release版本添加了debug信息后也能查到基本的信息。

基本命令:

首先使用windbg工具gflags.exe设置内存启动跟踪内存泄露进程的user stack

gflags.exe /i test.exe +ust  //设置

起动test.exe,然后起动Windbg.exe,按F6 attachprocess  test.exe。

!heap -s  //查看初始堆内存块,用于以后对比

按F5让test.exe 继续运行。

运行一会后,停止test.exe(叉掉,但实际 上是关不掉的,只是停止运行了)

!heap -s //再次查看堆内存块,与第一次对比,heap 有增加的,即存在内存泄露。

!heap -stat –h 00330000(内存地址,具体可变)

!heap -flt s 1f64 (内存块的大小)

!heap -p -a 0143d8c8(随便选一个UsrPtr ),查看其内存call stack,即可看到出出内存泄露的函数



参考:

http://www.codeproject.com/Articles/31382/Memory-Leak-Detection-Using-Windbg?msg=3284671#xx3284671xx