winDBG 基本操作集合

----------------------------------------------------------------------------------

srv*C:/symbol*http://msdl.microsoft.com/download/symbols;D:\Desktop\CMS_Dump

symck //检查pdb

lm //显示pdb

~* kv //重新加载

----------------------------------------------------------------------------------

//写入日志文件

.logopen d:\output.txt

.logclose

.logfile

----------------------------------------------------------------------------------

 

//堆操作

!heap -s //显示堆信息

!heap -a 019e0000 //查看泄漏的堆信息

!heap -flt s 4c8a //打印4c8a长度所有内存变量(有用)

 

!address //打印内存信息(有用)

Largest free region (最大可分配的内存块空间)

 

dc 17f2f000 //看内存

dps 17f2f000

 

dt -s 4c -n DMS_Server!* //查找4c长度的结构体等

dt -v DMS_Server!DataRow 376c4b58+8 //release头 +8

 

~*k //查看所有线程的堆栈

 

----------------------------------------------------------------------------------

windbg 中对其动态调试 示例

. 查看初始的堆状态

!heap -s

. 统计一下这个堆里的内存分配情况,发现 1000 字节的内存分配占了 86.97%,目标就锁定它了。

!heap -stat -h 00230000

. 看一下都是哪些堆申请的

!heap -flt s 1000

. 挑几个地址看一下调用栈

!heap -p -a 0303aec0

----------------------------------------------------------------------------------

//在vs中查看

*(DataRow*)(0x18302b88)

----------------------------------------------------------------------------------

 

//栈内存和堆内存区别

0:004> !address 0x0E41F420

Usage RegionUsageStack 栈

Usage RegionUsageHeap 堆 

posted @ 2013-05-30 20:01  Tigmer  阅读(163)  评论(0编辑  收藏  举报