« 文件过滤驱动要小心分配内存上次说的0day终于在User权限下溢出成功了 »

Windbg找应用程序内存泄露

给自己做个记号


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

 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 2.0 bate Build Theme by toboku

Copyright langouster. Some Rights Reserved.   苏ICP备06046736号