troushoo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

WinDBG で使用できる.NET 用のデバッガーエクステンション : SOSEX.dll

概要

WinDBG で使用できる.NET 用のデバッガーエクステンションSOSEX.dll を紹介します。
SOSEX.dll はフリーで使用することができます。

内容

SOSEX.dll とは
SOSEX.dll は、WinDBG の.NET 用のデバッガーエクステンションで、フリーで使用することができます。
SOS.dll では実行できない種々のコマンドが実装されております。

SOSEX.dll の使用方法
ダウンロードは、作者のページより行うことができます。
SOSEX.dll のサイト

SOSEX.dll を使用するには、”.load <sosex.dll のパス>”を実行する必要があります。
問題なくload できたかは、”!chain” を実行し”sosex.dll” が出力されていることで確認できます。
.load <sosex.dll のパス>

SOSEX.dll のコマンド例
以下、SOSEX.dll のコマンド例を紹介します。
!mx
”!mx 文字列” という風に使用します。
文字列に合致したタイプ/フィールド/メソッド名を表示します。

以下は、”!mx MySOSEX!*” を実行した結果です。
MySOSEX.exe のクラス、フィールド、メソッドの情報が表示されていることがわかります。
!mx MySOSEX!*

!mbm
”mbm メソッド文字列” という風に使用します。
メソッドに対してブレークポイントを張ります。

以下は、”!mbm MySOSEX.MyClass.MyMethod” を実行した結果です。
”!mbl” を実行することで、実際にブレークポイントが張られているかを調べることもできます。
!mbm MySOSEX.MyClass.MyMethod

!mdv
”!mdv” という風に使用します。
ローカル変数を表示します。
!mdv

!mk
”!mk” という風に使用します。
マネージド・アンマネージド混在のスタックを表示します。
!mk

補足

SOSEX.dll は、他にも多くのコマンドがあります。
以下は!sosex.help の出力です。

0:000> !sosex.help
SOSEX - Copyright 2007-2014 by Steve Johnson - http://www.stevestechspot.com/
To report bugs or offer feedback about SOSEX, please email sjjohnson@pobox.com
Quick Ref:
--------------------------------------------------
bhi [filename] BuildHeapIndex - Builds an index file for heap objects.
bpsc (Deprecated. Use !mbp instead)
chi ClearHeapIndex - Frees all resources used by the heap index and removes it from memory.
dlk [-d] Displays deadlocks between SyncBlocks and/or ReaderWriterLocks
dumpfd <FieldAddr> Dumps the properties of a FieldDef structure
dumpgen <GenNum> [-free] [-stat] [-type <TYPE_NAME>] Dumps the contents of the specified generation
[-nostrings]
finq [GenNum] [-stat] Displays objects in the finalization queue
frq [-stat] Displays objects in the Freachable queue
gcgen <ObjectAddr> Displays the GC generation of the specified object
gch [HandleType]... [-stat] Lists all GCHandles, optionally filtered by specified handle types
help [CommandName] Display this screen or details about the specified command
lhi [filename] LoadHeapIndex - load the heap index into memory.
mbc <SOSEX breakpoint ID | *> Clears the specified or all managed breakpoints
mbd <SOSEX breakpoint ID | *> Disables the specified or all managed breakpoints
mbe <SOSEX breakpoint ID | *> Enables the specified or all managed breakpoints
mbl [SOSEX breakpoint ID] Prints the specified or all managed breakpoints
mbm <Type/MethodFilter> [ILOffset] [Options] Sets a managed breakpoint on methods matching the specified filter
mbp <SourceFile> <nLineNum> [ColNum] [Options] Sets a managed breakpoint at the specified source code location
mdso [Options] Dumps object references on the stack and in CPU registers in the current context
mdt [TypeName | VarName | MT] [ADDR] [Options] Displays the fields of an object or type, optionally recursively
mdv [nFrameNum] Displays arguments and locals for a managed frame
mfrag [-stat] [-mt:<MT>] Reports free blocks, the type of object following the free block, and fragmentation statistics
mframe [nFrameNum] Displays or sets the current managed frame for the !mdt and !mdv commands
mgu // TODO: Document
mk [FrameCount] [-l] [-p] [-a] Prints a stack trace of managed and unmanaged frames
mln [expression] Displays the type of managed data located at the specified address or the current instruction pointer
mlocks [-d] Lists all managed lock objects and CriticalSections and their owning threads
mroot <ObjectAddr> [-all] Displays GC roots for the specified object
mt (no parameters) Steps into the managed method at the current position
mu [address] [-s] [-il] [-n] Displays a disassembly around the current instruction with interleaved source, IL and asm code
muf [MD Address | Code Address] [-s] [-il] [-n] Displays a disassembly with interleaved source, IL and asm code
mwaits [-d | LockAddr] Lists all waiting threads and, if known, the locks they are waiting on
mx <Filter String> Displays managed type/field/method names matching the specified filter string
rcw [Object or SyncBlock Addr] Displays Runtime Callable Wrapper (RCW) COM interop data.
refs <ObjectAddr> [-target|-source] Displays all references from and to the specified object
rwlock [ObjectAddr | -d] Displays all RWLocks or, if provided a RWLock address, details of the specified lock
sosexhelp [CommandName] Display this screen or details about the specified command
strings [ModuleAddress] [Options] Search the managed heap or a module for strings matching the specified criteria

ListGcHandles - See gch

Use !help <command> or !sosexhelp <command> for more details about each command.
You can also use the /? (or -?) option on any command to get help for that command.




情報元
STEVE’S TECHSPOT (英語)

関連記事
Psscor2/Psscor4で.NETのデバッグ
  1. 2014/04/15(火) 21:34:10|
  2. SOS・Psscor2/Psscor4
  3. | トラックバック:0
  4. | コメント:0
<<エラーコードの意味を簡単に把握する方法 : errlook.exe | ホーム | 問題のあるパケットをWireshark で素早く把握する方法 : tcp.analysis.flags && !tcp.analysis.window_update>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/166-53e6806e
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。