一般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