您的位置:首页 > 其它

WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册

2014-02-06 21:21 417 查看
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载。

系列博文

《WinDbg 命令三部曲:(一)WinDbg 命令手册》

《WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册》

《WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册》

导航目录

扩展加载命令

SOSEX扩展命令

SOSEX 调试命令手册

扩展加载命令
命令描述
.load.load sosex

.load C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\sosex.dll



SOSEX扩展命令
命令描述
!bhi

!bhi [filename] BuildHeapIndex 用于对 GC 堆内的对象构建一个索引文件。

这将使 !gcroot 和 !refs 命令工作的更加快速。

索引内容将被存储到给定的文件名的文件中。

如果未指定文件名,则默认的文件名为 %dumppath%\%dumpname%_heapindex.bin 。

!chi

!chi ClearHeapIndex 释放堆索引使用的所有资源,并从内存中移除。

!dlk

!dlk [-d] 检测 SynczBlock 死锁。

-d 同时也检测 ReaderWriterLock 或 ReaderWriterLockSlim 的衍生类。

!dumpfd

!dumpfd <FieldAddr> 显示 FieldDef 结构的属性值。
!dumpgen

!dumpgen <intGenNum> [-free] [-stat] [-type <TYPE_NAME>] [-nostrings]

以如下格式显示指定代的内容:

hexAddr decSize strTypeName

-nostrings 不显示对象名称或字符串数据。

-free 仅包括 FREE 的对象类型。

-stat 仅显示一个综合的统计。

-type 仅包含类型名称字符串中包含给定子字符串的对象数据。



!finq

!finq [GenNum] [-stat] 显示终结化队列中的对象,并根据代来分类。

GenNum 给定的代(generation)。

-stat 显示统计信息。



!frq

!frq [-stat] 显示可达队列(Freachable Queue)中的对象。



!gcgen

!gcgen <hexObjectAddr> 获取给定对象在 GC Heap 中的代数。如果对象在 LOH 中,则会提示 “Large Object Heap”。

!gch

!gch [-HandleType] [-stat] 列出所有 GCHandle 实例。

-HandleType 指定句柄的类型。!gch -Pinned -Strong

-stat 根据句柄类型进行统计。

有效的类型有:

WeakShort

WeakLong

Strong

Pinned

Variable

RefCounted

AsyncPinned



!lhi

!lhi [filename] LoadHeapIndex 从给定的文件中加载堆索引。

如果未指定文件名称,则默认的文件名称为 %dumppath%\%dumpname%_heapindex.bin。

!mbc

!mbc <Managed Breakpoint ID | *> 移除指定 ID 的断点。* 为移除全部。

!mbd

!mbd <Managed Breakpoint ID | *> 使失效,但不移除断点。
!mbe

!mbe <Managed Breakpoint ID | *> 使断点生效。
!mbl

!mbl <Managed Breakpoint ID> 显示给定 ID 的断点,或列出所有托管断点及其状态。
!mbm

!mbm <method filter> [ILOffset] [Options] 在指定的方法及偏移处设置断点。
!mdso

!mdso [Options] 显示在当前上下文中,对象在栈上和 CPU 寄存器中的引用。

/a 显示栈上所有对象的引用。

/r 仅显示寄存器中的对象。

/c:n 限定显示的对象的数量为 n。

/t:typeFilter 限制显示的对象的类型。

/mt:MT 限制显示的对象为指定的方法表。

!mdt

!mdt [typename | paramname | localname | MT] [ADDR] [-r[:level]] [-e[:level]] [-start:index] [-count:n]

显示指定对象或类型的字段信息。

-r 递归显示字段信息。

-e 指定的类型将被扩展。



!mdv

!mdv [nFrameNum] 显示当前帧中的参数或局部变量的信息。帧来自 !mframe 命令。



!mfrag

!mfrag [-stat] [-mt:<MT>] 输出空闲的块报告。

-stat 显示统计报告

-mt:MT 仅显示碎片信息

!mframe

!mframe [frame number] 为 !mdt 或 !mdv 命令设置当前的托管帧。

!mgu

!mgu 返回在当前调用栈中最后一个托管调用者的当前位置。
!mk

!mk [-l] [-p] [-a] [-c] [-cc] 显示调用栈中托管和非托管帧的组合。

-l 显示局部变量

-p 显示参数

-a 显示局部变量和参数(Locals + Parameters)

-c 清理

-cc 清理,同时也拆解名空间。



!mln

!mln [address expression] 显示给定地址处的 CLR 数据类型。



!mlocks

!mlocks [-d] 显示线程中所有的托管锁对象和 CriticalSections 对象。

-d 同样搜索 ReaderWriterLock 或 ReaderWriterLockSlim 的衍生类。

!mroot

!mroot <ObjectAddr> [-all] 显示指定对象的 GC 根。

通常情况,仅显示第一个 Root 路径。

-all 显示所有的路径,这可能会耗费较长的时间。

!mt

!mt 步进至当前位置的托管方法。
!mu

!mu [address] [-s] [-il] [-n] 显示托管和非托管反汇编的交叉信息。

-s 显示源代码,如果可用。

-il 显示 IL 反汇编程序。

-n 显示原生的反汇编程序。

默认情况为 IL 和 Native 均显示。



!muf

!muf [MD Address | CodeAddress] [-s] [-il] [-n] 根据给定的 MD 信息进行反汇编,并显示交叉信息。

-s 显示源代码,如果可用。

-il 显示 IL 反汇编程序。

-n 显示原生的反汇编程序。

默认情况为 IL 和 Native 均显示。



!mwaits

!mwaits [-d | LockAddr] 显示所有正在等待的线程。如果可知的话,同时显示正在等待的锁的信息。

-d 同样搜索 ReaderWriterLock 或 ReaderWriterLockSlim 的衍生类。

LockAddr 列出所有等待该地址锁的线程。

-d 和 LockAddr 选项是互斥的。

!mx

!mx <Filter String> 显示任意匹配的类型、方法、字段等。

!rcw

!rcw [Object or SyncBlock Addr] 显示 RuntimeCallableWrapper 数据。

!refs

!refs <hexObjectAddr> [-target|-source] 列出指定对象的所有的引用。

-source 仅显示指定对象所持有的引用。

-target 仅显示持有指定对象的引用。

格式化的输出采用如下格式:

hexAddr decSize strTypeName



!rwlock

!rwlock [ObjectAddr | -d] 显示所有的 RWLock。如果给定 RWLock 地址,则显示该锁的详细信息。

-d 同样搜索 ReaderWriterLock 或 ReaderWriterLockSlim 的衍生类。



!strings

!strings [ModuleAddress] [Options] 在托管堆或指定的模块中搜索匹配的字符串信息。

可选项:

g:<min gen> 列出指定 GC 代数中的字符串。有效的参数为 0、1、2 和 3(LOH)。

m:<match filter> 显示指定匹配规则的字符串。

n:<min length> 显示字符串的长度的最小值。

x:<max length> 显示字符串的长度的最大值。



参考资料

Common WinDbg Commands

WinDbg cheat sheet

SOSEX by Steve Johnson

那些年黑了你的微软BUG

本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载。

系列博文

《WinDbg 命令三部曲:(一)WinDbg 命令手册》

《WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册》

《WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: