winDbg 命令使用帮助

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

symck //检查pdb
lm //显示pdb

//写入日志文件
.logopen d:\output.txt
.logclose
.logfile

!heap -s //显示堆信息
!heap -a 019e0000 //查看泄漏的堆信息
!heap -flt s size
//打印所有内存变量(有用)

!address 打印内存信息(有用)
Largest free region(最大可分配的内存块空间)

------------- windbg 中对其动态调试 示例 --------------------
一. 查看初始的堆状态
!heap
-s

二. 统计一下这个堆里的内存分配情况,发现 1000 字节的内存分配占了 86.97%,目标就锁定它了。
!heap -stat -h
00230000
size #blocks total ( %) (percent of total busy
bytes)
1000 158 - 158000 (86.97)

三.
看一下都是哪些堆申请的
!heap -flt s 1000

四. 挑几个地址看一下调用栈
!heap -p -a 0303aec0
address 0303aec0 found in

_HEAP @ 230000
HEAP_ENTRY Size Prev Flags UserPtr UserSize -
state
0303aec0 0221 0000 [00] 0303aed8 01000 - (busy)

7707dd6c ntdll!RtlAllocateHeap+0x00000274
7541f947
KERNELBASE!FindNextFileW+0x00000090
...
...

771a3c45 kernel32!BaseThreadInitThunk+0x0000000e
770637f5
ntdll!__RtlUserThreadStart+0x00000070
770637c8
ntdll!_RtlUserThreadStart+0x0000001b
---------------------------------------

dt -s 4c -n DMS_Server!* //查找4c长度的结构体等
dt -v DMS_Server!DataRow
376c4b58+8 //release头 +8

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

//在vs中查看
*(DataRow*)(0x18302b88)

0:004> !address 0x0E41F420
0e419000 : 0e419000 - 00007000

Type 00020000 MEM_PRIVATE
Protect
00000004 PAGE_READWRITE
State 00001000 MEM_COMMIT

Usage RegionUsageStack 栈
Pid.Tid 554.b74

0:004> !address 003f0000
003f0000 : 003f0000 - 00010000

Type 00020000 MEM_PRIVATE
Protect
00000004 PAGE_READWRITE
State 00001000 MEM_COMMIT

Usage RegionUsageHeap 堆
Handle 003f0000

winDbg 命令使用帮助,码迷,mamicode.com

时间: 2024-10-16 06:47:25

winDbg 命令使用帮助的相关文章

windbg命令详解

DLL 该扩展仅在内核模式下使用,即使它是在Ext.dll中的. Windows NT 4.0 Ext.dll Windows 2000 Ext.dll Windows XP和之后 Ext.dll 注释 如果不提供参数,调试器会列出所有进程,以及时间和优先级统计.这和使用!process @#Process 0 作为CommandString值一样. To terminate execution at any point, press CTRL+BREAK (in WinDbg) or CTRL

WinDbg 命令集锦

//断点相关 bp + 地址 设置断点bl  显示已经设定的断点bu + 地址 设置断点,但是这种类型断点再下一次启动时被记录bc 清除断点对于断点范围,可以用*匹配,-表示一个范围,表达多个可用,号隔开 程序入口伪寄存器WinDbg里有个伪寄存器叫$exentry,里面记录了程序的入口点.所以我们只要在命令输入栏里输入bp $exentry(bp就是用来下断点的命令,详细用法可以参考WinDbg的帮助文档) //调试符号 ld kernerl32 //加载kernerl32模块的符号lm   

学习使用常用的windbg命令(u、dt、ln、x)

http://blog.csdn.net/wesley2005/article/details/51501514 目录: (1) u命令(反汇编) (2) dt命令(查看数据结构) (3) ln命令(查找就近的符号) (4) x命令(显示模块的符号) (5) k命令(显示调用栈) (6) d命令(以数据方式显示) (7) b命令(断点) (8) lm lmvm (显示模块信息) (9) .reload (重加载模块) (10) !process !thread .process .thread

windbg命令学习4

4.查看调用栈 k命令:显示的是一定数量的栈帧, 其中帧的数量是由.kframes命令来控制的, 默认值是256. 我们如何来判断函数的栈指针,参数地址和局部变量地址呢? 举一个简单的windbg的kv命令输出:ChildEBP RetAddr  Args to Child              03b1f9c4 0032549e 00e1b5f0 00e259f8 7c900059 如上所示,ebp是栈的指针,其中ebp+4保存的是函数返回地址,因此ebp+8(00e1b5f0 )开始就是

windbg命令学习2

一.windbg查看内存命令: 当我们在调试器中分析问题时, 经常需要查看不同内存块的内容以分析产生的原因, 并且在随后验证所做出的假设是否正确. 由于各个对象的状态都是保存在内存中的, 因此内存的内容也就相当于对象的状态. d命令最常见的格式就是根据指定的类型信息来显示存储在某地址中的数据. 调试器并不会去猜测这个地址上存储的是什么数据, 因为在大多数情况下猜测都是错误的. 所以需要用户显式地制定按照何种格式来解析数据. 命令格式如下: 语法:d [type][address range] /

WinDbg命令窗口的使用

调试器命令窗口是windbg中的主要调试信息窗口.可以在此窗口中输入调试程序命令并查看命令输出.Windbg的命令窗口是我们进行调试时,主要打交道的窗口.界面如下 对于windbg,“调试器命令窗口”是指标题栏中标记为“命令”的窗口.此窗口包含两个窗格: 在底部的小窗格中,输入命令.  在上面的大窗格中,可以查看命令输出. 打开和关闭命令窗口 通常我们通过打开exe程序.附加到进程或打开dmp文件进行调试时,会自动打开此窗口,但很有可能我们关闭掉了这个窗口,有如下重新打开方式: 点击工具栏按钮

《.NET内存管理宝典》 售后服务系列文(2) - WinDbg命令.cmdtree

.cmdtree 简介 使用形式 .cmdtree cmdfile 参数 cmdfile命令文件,包含多个你需要的命令.必须是一个文本档 使用步骤 1.使用命令创建文本文件test.wl,使用以下示例作为模板.您可以按所需方式修改{}之间的节: windbg ANSI Command Tree 1.0 title {"Common Commands"} body {"Common Commands"} {"Information"} {"

几个实用的WinDBG命令

WinDbg单独下载地址http://www.windbg.org/ kn command dump current stack 1: kd> kn # ChildEBP RetAddr 00 81e33c6c 81898d7c nt!RtlpBreakWithStatusInstruction 01 81e33c74 81898d2e nt!KdCheckForDebugBreak+0x22 02 81e33d20 8183ddd5 nt!KeUpdateRunTime+0x270 03 81

windbg命令备忘

C:\Users\qj\AppData\Local\Temp\w3wp (2).DMP C:\Users\qj\AppData\Local\Temp\w3wp (3).DMP srv[local cache][private symbol server]*https://msdl.microsoft.com/download/symbols srvc:\mysymbolshttps://msdl.microsoft.com/download/symbols .load C:\Windows\Mi