SOS.dll (SOS デバッガー拡張)

 

SOS デバッガー拡張 (SOS.dll) を使用して内部の共通言語ランタイム (CLR: Common Language Runtime) 環境に関する情報を渡すことにより、Visual Studio および Windows デバッガー (WinDbg.exe) でマネージ プログラムをデバッグできます。 このツールを使用するには、プロジェクトでアンマネージ デバッグが有効になっている必要があります。 SOS.dll は、.NET Framework と共に自動的にインストールされます。 Visual Studio で SOS.dll を使用するインストール、 Windows Driver Kit (WDK)します。

System_CAPS_ICON_note.jpg メモ

Visual Studio 2013 を使用している場合は、Visual Studio 内の Windows デバッガーで SOS.dll がサポートされますが、Visual Studio デバッガーのイミディエイト ウィンドウではサポートされません。

![command] [options]   

コマンド説明
AnalyzeOOM (ao)ガベージ コレクション ヒープへの割り当て要求で発生した最後の OOM に対する情報を表示します。 サーバーのガベージ コレクションでは、ガベージ コレクション ヒープごとに OOM を表示します (存在する場合)。
BPMD [-nofuturemodule] [module name> method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearall指定したモジュールの指定したメソッドにブレークポイントを作成します。

指定したモジュールとメソッドが読み込まれていない場合、このコマンドは、モジュールが読み込まれ、Just-In-Time (JIT) コンパイルが終了したことを示す通知を受け取るまで待機してから、ブレークポイントを作成します。

使用して保留中のブレークポイントの一覧を管理することができます、 -リスト-オフ、および- clearallオプション。

 -リストオプションは、保留中のすべてのブレークポイントの一覧を生成します。 保留中のブレークポイントにゼロ以外のモジュール ID がある場合、そのブレークポイントはその特定の読み込まれたモジュール内の関数に対するブレークポイントです。 保留中のブレークポイントにゼロのモジュール ID がある場合、そのブレークポイントはまだ読み込まれていないモジュールに適用されます。

使用して、 -オフまたは- clearall保留中のブレークポイントをリストから削除するにはオプションです。
CLRStack [-a] [-l] [-p] [-n]マネージ コードのみのスタック トレースを提供します。

 -Pオプションは、マネージ関数に引数を示しています。

 -Lオプションは、フレーム内のローカル変数に関する情報を表示します。 SOS デバッガー拡張がローカルの名前を取得できないのは、ローカル名の出力の形式がためローカル アドレス> = <> します。

 -A(すべて) オプションは、ショートカットを-l-p結合します。

 -Nオプションは、ソース ファイル名と行番号の表示を無効になります。 デバッガーで SYMOPT_LOAD_LINES オプションが指定されている場合、SOS はすべてのマネージ フレームでシンボルを検索し、成功した場合は、対応するソース ファイル名と行番号を表示します。 -N (行番号なし) パラメーターは、この動作を無効に指定することができます。

x64 ベースおよび IA-64 ベースのプラットフォーム上では、SOS デバッガー拡張で遷移フレームは表示されません。
COMStateCOM アパートメント モデルを使用可能な場合、各スレッドと Context ポインターについてモデルを一覧表示します。
DumpArray [-start <startIndex>] [-length <length>] [-details] [-nofields] array object address>

または

 DA [-start <startIndex>] [-length <length>] [-detail] [-nofields] array object address>
配列オブジェクトの要素を調べます。

 -開始オプションは、要素を表示する位置を示す開始インデックスを指定します。

 -長さオプションを表示する要素の数を指定します。

 -詳細オプションを使用して要素の詳細を表示する、 DumpObjDumpVC形式です。

 - Nofieldsオプションが配列表示されないようにします。 このオプションは利用可能な場合にのみ、 -詳細オプションを指定します。
DumpAssembly <とアセンブリ アドレス>アセンブリに関する情報を表示します。

 DumpAssemblyコマンドは、存在する場合に複数のモジュールを一覧表示します。

使用するとアセンブリ アドレスを取得できます、指定しないで呼び出すとコマンドです。
DumpClass <EEClass アドレス>型に関連付けられている EEClass 構造体に関する情報を表示します。

 DumpClassコマンドは、静的フィールドの値が表示されますが、静的でないフィールドの値は表示されません。

使用して、 DumpMTDumpObjName2EE、またはToken2EEを取得するコマンド、EEClassアドレスを構成します。
指定しないで呼び出すと[ドメイン アドレス>]各列挙アセンブリオブジェクトを指定した内に読み込まれてAppDomainオブジェクトのアドレス。 パラメーターなしで呼び出されたときに、指定しないで呼び出すとコマンドがすべて一覧表示AppDomainプロセス内のオブジェクト。
DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable address>] [-type <partial type name>][start [end]]ガベージ コレクトされたヒープと、オブジェクトの収集統計に関する情報を表示します。

 DumpHeapコマンドは、ガベージ コレクター ヒープの過剰な断片化が検出された場合に警告を表示します。

 -Statオプションは、統計的な型の概要に出力を制限します。

 -文字列オプションは、統計的な文字列値の概要に出力を制限します。

 -短いオプションは、各オブジェクトのアドレスだけに出力を制限します。 これにより、コマンドからの出力を別のデバッガー コマンドに簡単にパイプして、オートメーションを実現できます。

 最小オプションであるオブジェクトを無視するよりも低いsize、バイト単位で指定したパラメーターです。

 -最大オプションよりも大きいオブジェクトを無視する、 size 、バイト単位で指定したパラメーターです。

 - Thinlockオプションは、ThinLocks を報告します。 詳細については、次を参照してください。、 SyncBlkコマンドです。

 -startAtLowerBound オプションは、指定したアドレス範囲の下限からヒープ ウォークを強制的に開始します。 計画フェーズの間は、オブジェクトが移動されているのでヒープをウォークできないことがよくあります。 このオプションは強制DumpHeapに指定した下限にウォークを開始します。 このオプションが機能するには、有効なオブジェクトのアドレスを下限として指定する必要があります。 無効なオブジェクトのアドレスのメモリを表示して、次のメソッド テーブルを手動で検索できます。 ガベージ コレクションが現在 memcopy を呼び出している場合は、パラメーターとして渡された開始アドレスにサイズを追加することで、次のオブジェクトのアドレスを特定することもできます。

 -Mtオプションを指定された対応するオブジェクトのみを一覧表示MethodTable構造体。

 -型オプションには、型名を持つ、指定した文字列の部分文字列一致するオブジェクトのみが一覧表示します。

 start パラメーターは、指定したアドレスから一覧表示を開始します。

 end パラメーターは、指定したアドレスで一覧表示を終了します。
DumpIL <DynamicMethod のマネージ オブジェクト>DynamicMethodDesc ポインター>MethodDesc ポインター>マネージ メソッドに関連付けられている Microsoft Intermediate Language (MSIL) を表示します。

動的な MSIL は、アセンブリから読み込まれた MSIL とは異なる形式で出力されます。 動的な MSIL は、メタデータ トークンではなくマネージ オブジェクト配列内のオブジェクトを参照します。
DumpLog [-addr <addressOfStressLog>] [Filename>]メモリ内ストレス ログの内容を、指定したファイルに書き込みます。 名前を指定しないと、現在のディレクトリ内に StressLog.txt という名前のファイルが作成されます。

メモリ内ストレス ログを使用すると、ロックまたは I/O を使用せずにストレス エラーを診断できます。 ストレス ログを有効にするには、hkey_local_machine の下にある次のレジストリ キーを設定\します。NETFramework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

省略可能な -addr オプションを使用すると、デフォルト ログ以外のストレス ログを指定できます。
DumpMD <MethodDesc アドレス>指定したアドレスにある MethodDesc 構造体に関する情報を表示します。

使用することができます、 IP2MDを取得するコマンド、MethodDescマネージ関数からのアドレスを構成します。
DumpMT [-MD] MethodTable のアドレス>指定したアドレスにあるメソッド テーブルに関する情報を表示します。 指定する、 -MDオプションは、オブジェクトに定義されているすべてのメソッドの一覧を表示します。

各マネージ オブジェクトにメソッド テーブルのポインターが含まれています。
DumpMethodSig <sigaddr>モジュールr>指定したアドレスにある MethodSig 構造体に関する情報を表示します。
DumpModule [-mt]モジュールのアドレス>指定したアドレスにあるモジュールに関する情報を表示します。 -Mtオプションは、モジュールで定義された型とモジュールによって参照される型が表示されます。

使用することができます、指定しないで呼び出すとまたはDumpAssemblyモジュールのアドレスを取得するコマンドです。
DumpObj [- nofields]オブジェクトのアドレス>

または

**** <オブジェクトのアドレス>
指定したアドレスにあるオブジェクトに関する情報を表示します。 DumpObjコマンドは、フィールドを表示、EEClass構造体については、メソッド テーブル、およびオブジェクトのサイズ。

使用することができます、 DumpStackObjectsオブジェクトのアドレスを取得するコマンドです。

実行することに注意してください、 DumpObjコマンド型のフィールドをCLASSはオブジェクトでもあるためです。

 - Nofieldsオプションが表示されているオブジェクトのフィールドを使用する、文字列のようなオブジェクトと便利です。
DumpRuntimeTypesガベージ コレクター ヒープの中にあるランタイムの型オブジェクトを表示し、それらに関連付けられている型名とメソッド テーブルを一覧表示します。
DumpStack [-EE] [-n] [top stack [bottom stack]]スタック トレースを表示します。

 EEオプションにより、 DumpStackマネージ関数のみを表示するコマンドです。 top パラメーターおよび bottom パラメーターを使用して、x86 プラットフォーム上で表示するスタック フレームを制限します。

 -Nオプションは、ソース ファイル名と行番号の表示を無効になります。 デバッガーで SYMOPT_LOAD_LINES オプションが指定されている場合、SOS はすべてのマネージ フレームでシンボルを検索し、成功した場合は、対応するソース ファイル名と行番号を表示します。 -N (行番号なし) パラメーターは、この動作を無効に指定することができます。

X86 および x64 プラットフォームで、 DumpStackコマンドは、詳細なスタック トレースを作成します。

IA&64; ベースのプラットフォームで、 DumpStackコマンドと、デバッガーのKコマンドです。 IA-64 ベースのプラットフォーム上では、top パラメーターと bottom パラメーターは無視されます。
DumpSig <sigaddr> moduleaddr>指定したアドレスにある Sig 構造体に関する情報を表示します。
DumpSigElem <sigaddr> moduleaddr>署名オブジェクトの&1; つの要素を表示します。 ほとんどの場合、使用することはDumpSig個別の署名オブジェクトを確認します。 ただし、何らかの方法で、署名が破損しています、してDumpSigElemの有効な部分を読み取るにします。
DumpStackObjects [-verify] [top stack [bottom stack]]

または

 DSO [-verify] [top stack [bottom stack]]
現在のスタックの範囲内で見つかったすべてのマネージ オブジェクトを表示します。

 のことを確認検証静的でない各CLASSオブジェクト フィールドのフィールドです。

使用して、 DumpStackObjectなどコマンドはスタック トレース コマンドと共に、 KコマンドとCLRStackコマンドをローカル変数とパラメーターの値を決定します。
DumpVC <MethodTable のアドレス>アドレス>指定したアドレスにある値クラスのフィールドに関する情報を表示します。

 MethodTableパラメーターを使用して、 DumpVCコマンド フィールドを正しく解釈されます。 値クラスでは、最初のフィールドがメソッド テーブルになることはありません。
EEHeap [-gc] [-loader]内部の共通言語ランタイム データ構造体によって消費されるプロセス メモリに関する情報を表示します。

 -Gc-ローダーオプションは、ガベージ コレクターまたはローダーのデータ構造体には、このコマンドの出力を制限します。

ガベージ コレクターの場合、マネージ ヒープの各セグメントの範囲内にある情報が一覧表示されます。 によって指定されたセグメント内にポインターがあるかどうかは-gc、そのポインターはオブジェクト ポインター。
EEStack [-short] [-EE]実行、 DumpStackプロセス内のすべてのスレッドにします。

 EEオプションに直接渡される、 DumpStackコマンドです。 -短いパラメーターは、次の種類のスレッドへの出力を制限します。

ロックを取得しているスレッド。

ガベージ コレクションを実行できるように停止されているスレッド。

現在マネージ コードにあるスレッド。
EEVersion共通言語ランタイムのバージョンを表示します。
EHInfo [MethodDesc アドレス>] [コード アドレス>]指定したメソッドの例外処理ブロックを表示します。 このコマンドを使用すると、句ブロック (try ブロック) およびハンドラー ブロック (catch ブロック) のコード アドレスとオフセットが表示されます。
FAQよく寄せられる質問を表示します。
FinalizeQueue [-詳細][-allReady] [-short]完了の目的で登録されているすべてのオブジェクトを表示します。

 -詳細オプションは、いずれかに関する追加情報を表示SyncBlocksをクリーンアップする必要があるとRuntimeCallableWrappers(Rcw) のクリーンアップを待っています。 どちらのデータ構造体も、実行するとファイナライザー スレッドでキャッシュされクリーンアップされます。

 -allReady オプションは、終了準備完了になっているすべてのオブジェクトを表示します。ガベージ コレクションによって既にそのようにマークされているオブジェクトも、次のガベージ コレクションによってマークされる予定のオブジェクトも同様に扱われます。 "終了準備完了" リストに含まれるオブジェクトは、既にルートがなくなっているファイナライズ可能なオブジェクトです。 このオプションは、ファイナライズ可能なキューに含まれるすべてのオブジェクトにまだルートがあるかどうかを検証するため、非常に負荷がかかる場合があります。

 -short オプションは、各オブジェクトのアドレスに出力を制限します。 組み合わせて使用されている場合- シンボル、すべてのオブジェクトをファイナライザーを持つルートがなくなっているを列挙します。 単独で使用した場合は、ファイナライズ可能な状態で "終了準備完了" キューに含まれるすべてのオブジェクトが一覧表示されます。
FindAppDomain <オブジェクトのアドレス>指定したアドレスにあるオブジェクトのアプリケーション ドメインを確認します。
FindRoots -gen <N>-gen anyオブジェクトのアドレス>指定したジェネレーションの次のコレクションでデバッガーがデバッグ対象を中断するようにします。 中断が発生すると、このオプションの効果はすぐにリセットされます。 次のコレクションで中断するには、コマンドを再度実行する必要があります。 * > による中断後にこのコマンドの形式を使用、 -genまたはのいずれかの genが発生しました。 その時点で、デバッグ対象がの適切な状態ではFindRoots*から現在のオブジェクトのルートを識別するために、世代を無効です。
GCHandles [- perdomain]プロセス内のガベージ コレクター ハンドルに関する統計を表示します。

 - Perdomainオプションは、アプリケーション ドメインによる統計情報を配置します。

使用して、 GCHandlesガベージ コレクター ハンドルのリークによって発生するメモリ リークを検索するコマンドです。 たとえば、厳密なガベージ コレクター ハンドルが大きな配列を指しているためコードがその配列を保持したままになっているときに、その配列を解放せずにハンドルを破棄すると、メモリ リークが発生します。
GCHandleLeaksプロセスの強力なガベージ コレクター ハンドルおよび固定されたガベージ コレクター ハンドルへの参照についてメモリ内を検索し、結果を表示します。 ハンドルが見つかった場合、 GCHandleLeaksコマンドの参照のアドレスを表示します。 メモリ内にハンドルが見つからない場合、このコマンドは通知を表示します。
GCInfo <MethodDesc アドレス><コード アドレス>レジスタまたはスタックの場所にマネージ オブジェクトが格納された時期を示すデータを表示します。 ガベージ コレクションを実行する場合は、コレクターはオブジェクトに対する参照の場所を把握しておく必要があります。その結果、新しいオブジェクト ポインターの値を使用して参照を更新できます。
GCRoot [- nostacks]オブジェクトのアドレス>指定したアドレスにあるオブジェクトへの参照 (またはルート) に関する情報を表示します。

 GCRootとハンドル テーブル内にあるその他のハンドルがオブジェクトおよびスタックの処理コマンドは、マネージ ヒープ全体を調べます。 次に、オブジェクトへのポインターについて各スタックを検索し、さらにファイナライザー キューも検索します。

このコマンドは、スタック ルートが有効かまたは破棄されているかどうかを確認しません。 使用して、 CLRStackUスタック ルートが使用中でかどうかを判断するためにローカルまたは引数の値が属するフレームを逆アセンブルするコマンドです。

 - Nostacksオプションのみをガベージ コレクター ハンドルおよび到達可能なオブジェクトを検索します。
GCWhere  >渡された引数のガベージ コレクション ヒープ内での位置とサイズを表示します。 引数がマネージ ヒープ内にあっても、有効なオブジェクト アドレスではない場合は、サイズは 0 (ゼロ) と表示されます。
help [command>] [faq]パラメーターを指定しない場合は、使用できるすべてのコマンドを表示します。パラメーターとしてコマンドを指定した場合は、そのコマンドに関する詳細なヘルプを表示します。

 faq パラメーターを指定すると、よく寄せられる質問に対する回答が表示されます。
HeapStat [- inclUnrooted-iu]各ヒープのジェネレーション サイズ、および各ヒープの各ジェネレーションでの合計空き領域を表示します。 場合は、inclUnrootedオプションを指定すると、レポートには、既にルートがないガベージ コレクション ヒープからマネージ オブジェクトに関する情報が含まれます。
HistClearHist コマンドのファミリによって使用されているすべてのリソースを解放します。

通常は、HistClear を明示的に呼び出す必要はありません。各 HistInit が前のリソースをクリーンアップします。
HistInitデバッグ対象に保存されているストレス ログから SOS 構造体を初期化します。
HistObj<obj_address></obj_address>すべてのストレス ログ再配置レコードを調べて、引数として渡されたアドレスになった可能性のあるガベージ コレクション再配置のチェーンを表示します。
HistObjFind  <obj_address></obj_address>指定したアドレスにあるオブジェクトを参照するすべてのログ エントリを表示します。
HistRoot<>>指定したルートの上位変換と再配置の両方に関係する情報を表示します。

ルートの値を使用すると、ガベージ コレクション内でのオブジェクトの移動を追跡できます。
IP2MD <コード アドレス>JIT コンパイルされたコード内の指定したアドレスにある MethodDesc 構造体を表示します。
ListNearObj(lno)<obj_address></obj_address>指定したアドレスの前および後にあるオブジェクトを表示します。 このコマンドは、マネージ オブジェクトの開始時に (有効メソッド テーブルに基づいて) 有効であると考えられるガベージ コレクション ヒープ内のアドレス、および引数アドレスの後のオブジェクトを検索します。
MinidumpMode [0] [1]ミニダンプを使用するときに安全でないコマンドが実行されるのを防止します。

渡す0この機能を無効にするか、 1この機能を有効にします。 既定では、 MinidumpModeに値が設定されている0です。

ミニダンプが作成された、 .dump/mコマンドまたは.dumpコマンドは、CLR に固有のデータに制限され、正しく SOS コマンドのサブセットのみを実行することです。 一部のコマンドはメモリの必要領域が割り当てられていないか一部分しか割り当てられていないため、予期しないエラーが発生して失敗することがあります。 このオプションは、ミニダンプに対して安全でないコマンドが実行されるのを防止します。
Name2EE <モジュール名>型またはジェネリック メソッドの名前>

または

 Name2EE <module name>!<型またはジェネリック メソッドの名前>
指定したモジュール内の指定した型またはメソッドの MethodTable 構造体および EEClass 構造体を表示します。

指定したモジュールをプロセスに読み込む必要があります。

適切な型名を取得するを使用して、モジュールを参照、 Ildasm.exe (IL 逆アセンブラー)します。 また、* を module name パラメーターとして渡すと、読み込まれているすべてのマネージ モジュールを検索できます。 モジュール名パラメーターもできるモジュールの場合、デバッガーの名前などmscorlibまたはimage00400000です。

このコマンドは、Windows のデバッガー構文をサポートしているmodule > ! < type> します。 型は、完全修飾する必要があります。
ObjSize [オブジェクトのアドレス>][-aggregate] [-stat]指定したオブジェクトのサイズを表示します。 すべてのパラメーターが指定されていない場合、 ObjSizeのコマンドは、マネージ スレッドで見つかったすべてのオブジェクトのサイズを表示、プロセスでは、すべてのガベージ コレクター ハンドルを表示し、それらのハンドルが指すオブジェクトのサイズの合計です。 ObjSizeコマンドにはだけでなく、親のすべての子オブジェクトのサイズが含まれています。

 -集計オプションを組み合わせて使用できる、 -statまだルートがある種類の詳細なビューを取得する引数。 使用して! dumpheap-stat! objsize-集計 - stat、どのオブジェクトがルートがなくなってとさまざまなメモリの問題の診断を指定できます。
PrintException [-入れ子になった] [-行] [例外オブジェクトのアドレス>]

または

 PE [-入れ子になった] [例外オブジェクトのアドレス>]
表示およびから派生したオブジェクトのフィールドを書式設定、例外クラスは、指定したアドレスです。 アドレスが指定されていない場合、 PrintExceptionコマンドには、現在のスレッド上でスローされた最後の例外が表示されます。

 -入れ子になったオプションには、入れ子になった例外オブジェクトに関する詳細が表示されます。

 -行オプションは、使用可能な場合に、ソース情報を表示します。

このコマンドを使用すると、バイナリ配列の _stackTrace フィールドを書式設定して表示できます。
ProcInfo [-env] [-time] [-mem]プロセスの環境変数、カーネル CPU 時間、およびメモリ使用率統計を表示します。
RCWCleanupList <RCWCleanupList アドレス>指定したアドレスにあり、クリーンアップを待っているランタイム呼び出し可能ラッパーの一覧を表示します。
SaveModule <ベース アドレス>ファイル名>メモリ内の指定したアドレスに読み込まれているイメージを、指定したファイルに書き込みます。
SOSFlush内部 SOS キャッシュをフラッシュします。
StopOnException [-派生] [-作成-create2]例外>擬似レジスタの数>指定した例外がスローされたときにデバッガーを停止しますが、それ以外の例外がスローされたときは実行を続行します。

 -派生オプションは、指定した例外および指定された例外から派生したすべての例外をキャッチします。
SyncBlk [-allsyncblk 数>]指定した SyncBlock 構造体またはすべての SyncBlock 構造体を表示します。 任意の引数を渡さない場合、 SyncBlkコマンドの表示、SyncBlockスレッドによって所有されているオブジェクトに対応する構造体。

 SyncBlock 構造体は、オブジェクトによっては作成する必要のないこともある追加情報のコンテナーです。 この構造体は、COM 相互運用機能データ、ハッシュ コード、およびスレッド セーフ操作用のロック情報を保持できます。
スレッド プールキュー内の作業要求の数、完了ポート スレッドの数、タイマーの数を含め、マネージ スレッド プールに関する情報を表示します。
Token2EE <モジュール名>トークン>指定したモジュール内の指定したメタデータ トークンを MethodTable 構造体または MethodDesc 構造体に変換します。

module name パラメーターに * を渡すと、読み込まれているすべてのマネージ モジュール内にあるそのトークンの割り当て先を検索できます。 また、デバッガーの mscorlibimage00400000 などのモジュール名を渡すこともできます。
Threads [-live] [-special]プロセス内のすべてのマネージ スレッドを表示します。

 スレッドコマンドは、デバッガーの短縮 ID、共通言語ランタイムのスレッド ID、およびオペレーティング システム スレッド ID を表示します。 さらに、スレッドコマンドには、ドメイン列、スレッドを実行しているアプリケーション ドメインを示す、COM アパートメント モードが表示される APT 列およびスレッドで最後にスローされる例外を表示する例外列が表示されます。

 -Liveオプション、ライブ スレッドに関連付けられているスレッドを表示します。

 -特殊なオプションは、CLR で作成されたすべての特殊なスレッドを表示します。 特殊なスレッドには、ガベージ コレクション スレッド (同時実行とサーバーのガベージ コレクション) では、デバッガー ヘルパー スレッド、ファイナライザー スレッド、 AppDomainアンロード スレッド、およびスレッド プール タイマー スレッドです。
ThreadState ** 状態値フィールド>**スレッドの状態を表示します。 valueパラメーターは、の値、Stateフィールドに、スレッドレポート出力します。

例:

 0:003> !Threads ThreadCount: 2 UnstartedThread: 0 BackgroundThread: 1 PendingThread: 0 DeadThread: 0 Hosted Runtime: no PreEmptive GC Alloc Lock ID OSID ThreadOBJ State GC Context Domain Count APT Exception 0 1 250 0019b068 a020 Disabled 02349668:02349fe8 0015def0 0 MTA 2 2 944 001a6020 b220 Enabled 00000000:00000000 0015def0 0 MTA (Finalizer) 0:003> !ThreadState b220 Legal to Join Background CLR Owns CoInitialized In Multi Threaded Apartment
TraverseHeap [xml]ファイル名>ヒープ情報を、CLR プロファイラーが処理できる形式で指定したファイルに書き込みます。 Xmlオプションにより、 TraverseHeapコマンド ファイルを XML としての書式を設定します。

CLR プロファイラーをダウンロードすることができます、 Microsoft ダウンロード センターします。
U [-gcinfo] [-ehinfo] [-n] MethodDesc address>コード アドレス>メソッドの MethodDesc 構造体ポインターまたはメソッド本体のコード アドレスで指定したマネージ メソッドの注釈付き逆アセンブリを表示します。 Uコマンドは、最初から最後まで、メタデータ トークン名を変換する注釈付きメソッド全体を表示します。

 - Gcinfoオプションにより、 Uコマンドを表示する、GCInfoメソッドの構造体。

 - Ehinfoオプションは、メソッドの例外情報を表示します。 この情報を取得することも、 EHInfoコマンドです。

 -Nオプションは、ソース ファイル名と行番号の表示を無効になります。 デバッガーで SYMOPT_LOAD_LINES オプションが指定されている場合、SOS はすべてのマネージ フレームでシンボルを検索し、成功した場合は、対応するソース ファイル名と行番号を表示します。 指定できます、 -nこの動作を無効にすることです。
VerifyHeapガベージ コレクター ヒープの破損の兆候をチェックし、検出されたすべてのエラーを表示します。

ヒープが正しく構築されていない場合、プラットフォームが呼び出しを実行したことが原因で、ヒープが破損する可能性があります。
VerifyObj <オブジェクトのアドレス>引数として渡されたオブジェクトで破損の兆候を調べます。
VMMap仮想アドレス空間を走査し、各領域に適用されている保護方法の種類を表示します。
VMStat仮想アドレス空間の概要を、そのメモリに適用されている保護方法の種類 (保護なし、予約済み、コミット、プライベート、割り当て済み、イメージ) の順に表示します。 AVERAGE 列に BLK COUNT 列を掛けた結果が TOTAL 列に表示されます。

SOS デバッガー拡張を使用すると、共通言語ランタイム内部で実行しているコードに関する情報を表示できます。 たとえば、SOS デバッガー拡張を使用して、マネージ ヒープに関する情報の表示、ヒープ破損の検索、ランタイムが使用している内部データ型の表示、およびランタイム内部で実行しているすべてのマネージ コードに関する情報の表示を行うことができます。

Visual Studio で SOS デバッガー拡張を使用するインストール、 Windows Driver Kit (WDK)します。 Visual Studio の統合デバッグ環境については、次を参照してください。デバッグ環境Windows デベロッパー センターにします。

利用できる WinDbg.exe デバッガーに読み込むことによって、SOS デバッガー拡張を使用することも、 WDK および開発者用ツールの Web サイトWinDbg.exe でコマンドを実行するとします。

WinDbg.exe デバッガーに SOS デバッガー拡張を読み込むには、ツールで次のコマンドを実行します。

.loadby sos clr  

WinDbg.exe と Visual Studio は、現在使用している Mscorwks.dll のバージョンに対応する SOS.dll のバージョンを使用します。 .NET Framework の Version 1.1 および 2.0 では、SOS.dll は Mscorwks.dll と同じディレクトリにインストールされます。 既定では、Mscorwks.dll の現在のバージョンに一致する SOS.dll のバージョンを使用することになります。

別のコンピューターで作成されたダンプ ファイルを使用するには、そのインストールに付属していた Mscorwks.dll ファイルが現在のコンピューターのシンボル パスにあることを確認し、対応するバージョンの SOS.dll を読み込みます。

特定のバージョンの SOS.dll を読み込むには、Windows デバッガーに次のコマンドを入力します。

.load <full path to sos.dll>  

次のコマンドは、アドレス 00ad28d0 にある配列の内容を表示します。 2 番目の要素およびそれ以降にある合計&5; つの要素が表示されます。

!dumparray -start 2 -length 5 -detail 00ad28d0   

次のコマンドは、アドレス 1ca248 にあるアセンブリの内容を表示します。

!dumpassembly 1ca248  

次のコマンドは、ガベージ コレクター ヒープに関する情報を表示します。

!dumpheap  

次のコマンドは、メモリ内ストレス ログの内容を、現在のディレクトリ内にある StressLog.txt という名前の (既定の) ファイルに書き込みます。

!DumpLog  

次のコマンドは、アドレス MethodDesc にある 902f40 構造体を表示します。

!dumpmd 902f40  

次のコマンドは、アドレス 1caa50 にあるモジュールに関する情報を表示します。

!dumpmodule 1caa50  

次のコマンドは、アドレス a79d40 にあるオブジェクトに関する情報を表示します。

!DumpObj a79d40  

次のコマンドは、アドレス 00a79d9c にあるメソッド テーブルを使用して、アドレス 0090320c にある値クラスのフィールドを表示します。

!DumpVC 0090320c 00a79d9c  

次のコマンドは、ガベージ コレクターによって使用されるプロセス メモリを表示します。

!eeheap -gc  

次のコマンドは、完了の目的でスケジュールされているすべてのオブジェクトを表示します。

!finalizequeue  

次のコマンドは、アドレス 00a79d98 にあるオブジェクトのアプリケーション ドメインを確認します。

!findappdomain 00a79d98  

次のコマンドは、現在のプロセス内のすべてのガベージ コレクター ハンドルを表示します。

!gcinfo 5b68dbb8   

次のコマンドは、MethodTable モジュールにある EEClass クラスの Main メソッドの MainClass 構造体および unittest.exe 構造体を表示します。

!name2ee unittest.exe MainClass.Main  

次のコマンドは、02000003 モジュールのアドレス unittest.exe にあるメタデータ トークンに関する情報を表示します。

!token2ee unittest.exe 02000003  

ツール
コマンド プロンプト

表示: