给自己做个记号
1.先运行Windbg安装目录下的gflags.exe,Image File,Image填exe名字,不要全路径,选上Create user mode stack trace database;
2.在Windbg中调试模式运行程序,在退出时显示:
e:\vs工程\tests\testsdlg.cpp(101) : {125} normal block at 0x003B9578, 100 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
3.执行!heap -x 命令
0:000> !heap -x 0x003B9578
Entry User Heap Segment Size PrevSize Unused Flags
-----------------------------------------------------------------------------
003b9550 003b9558 003b0000 003b0640 a0 808 18 busy extra fill
4.执行!heap -p -a 003b9550
二。没有打印"normal block at 0x003B9578"的情况,要使用umdh,在windbg的安装目录下有
1.设置好符号变量路径:echo %_NT_SYMBOL_PATH%
C:\WINDOWS\Symbols\dll;E:\Symbols;http://192.168.74.55/sym;http://msdl.microsoft
.com/download/symbols
2.建一个内存快照:umdh.exe -p:2728 -f:c:\1.log
3.再建一个内存快照:umdh.exe -p:2728 -f:c:\2.log
4.比较两个内存快照:umdh -d c:\1.log c:\2.log >c:\3.log
前面是+号的表示增加的,如
+ 8216 ( 8216 - 0) 1 allocs BackTrace65
+ 1 ( 1 - 0) BackTrace65 allocations
前面是-号的表示是减少的
- 8216 ( 0 - 8216) 0 allocs BackTrace61
- 1 ( 0 - 1) BackTrace61 allocations