文章出處

本文為 Dennis Gao 原創技術文章,發表于博客園博客,未經作者本人允許禁止任何形式的轉載。

系列博文

  1. 《WinDbg 命令三部曲:(一)WinDbg 命令手冊》
  2. 《WinDbg 命令三部曲:(二)WinDbg SOS 擴展命令手冊》
  3. 《WinDbg 命令三部曲:(三)WinDbg 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>   顯示字符串的長度的最大值。

參考資料

本文為 Dennis Gao 原創技術文章,發表于博客園博客,未經作者本人允許禁止任何形式的轉載。

系列博文

  1. 《WinDbg 命令三部曲:(一)WinDbg 命令手冊》
  2. 《WinDbg 命令三部曲:(二)WinDbg SOS 擴展命令手冊》
  3. 《WinDbg 命令三部曲:(三)WinDbg SOSEX 擴展命令手冊》

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()