WinDbgおよびSOSでSilverlightのデバッグ
はじめ
以前の記事でのVisual StudioでSilverlightのデバッグ 、私は、Visual Studioは、パワフルでマネージアプリケーションをデバッグするための最も便利なツールであることを実証した。 だけでなく、オプション場合は、一部の高度なデバッグシナリオのために、メモリリーク、デッドロック、暴走プロセス/スレッド、カーネルのデバッグ、および高度なリモート/クラッシュ/ UIのデバッグなどのように、WinDbgの(またはCDB、NTSD、KD)は通常、好ましい。
Windows用デバッグツール
概要
WinDbgは、の一部であり、Windowsのためのデバッグツールパッケージ:
WinDbgがGUIプログラムですが、それは主に(と多くの場合あり)KD、CDBとNTSDのようなコマンドラインのデバッガとして使用され、同じデバッグエンジンとコマンドを共有している。 それは、特によくシステム/ドライバおよび他のオペレーティングシステムコンポーネントのような低レベルのデバッグに最適な超強力で拡張可能です。 それは、ハードウェアの知識、オペレーティングシステム、およびツールセットを最大限に活用するためにコンパイラを必要とします。 それは偉大な(または完全な、私が言う必要があります
ネイティブデバッグのために、その広範かつ拡張可能なコマンドとグラフィックユーザーインターフェイスを持つ。 マネージデバッグのサポートは、SOSデバッグ拡張機能を経由している、ネイティブデバッグほど良くはありませんが、非常に大きな価値は、マネージコードとネイティブ境界を越えて統合されたデバッグを行うことができるというのがある、とSilverlightのために、それは私が知っている唯一のツールです。それは、SOSをロードし、統合されたデバッグを行うことができます。
コマンド
WinDbgは/ CDB / NTSD / kdは長い間使われてきたので、彼らは非常によく文書化されています。 それは非常にあなたがにDebugging Tools for Windowsを読んだことをお勧めしますmicrosoft.comとMSDN 。 ここで私はあなたの感触とクイックリファレンスを与えるために、そのコマンドの簡単な概要を与える。 すべてのコマンドは、実行時のヘルプが付属して(経由して|?ヘルプ|![<cmd>]などの下に議論を助ける)、その概要は、通常、開始するのに十分です。
WinDbgは、コマンドの3つのセットを持っています。
標準コマンド
主に:
- B *コマンドアドレスまたはアクセスでブレークポイントを設定/クリア/一覧表示/有効化/無効にする
- Dは、*コマンドメモリ(スタック/ヒープ、グローバル/ローカル変数とパラメータ)を調べるために、E *コマンドは、メモリを変更する、およびメモリを検索するためのS *
- K *コマンドは、コールスタックを調べるために
- 実行制御のためのP、T、G *コマンド
以下に? コマンド出力は、Windbg / CDB / NTSD / KDを使用して人々のためのすばらしい概観し、頻繁に参照です。
0:006>?
完全なデバッガのマニュアルのためのオープンDebugger.chmは
B [C | D | E] [<bps>] -クリア/有効/無効にするブレークポイント(複数可)
BL -リストのブレークポイント
BA <access>に<size>は<addr> -セットプロセッサのブレークポイント
BP <address>に-ソフトブレークポイントを設定する
D [タイプ] [<RANGE>] -ダンプメモリ
DT [- N | Y] [[MOD]名!] [[- N | Y]フィールド]
[アドレス] [- lのリスト] [- A [] | C | I | O | R [#] | V] -ダンプを使用して型情報
DV [<name>の] -ダンプのローカル変数
E [タイプ] <address>に[<values>] -メモリの値を入力します
G [H | N] [= <address>の[<address>に...]] -行く
K <count>の-スタックトレース
KP <count>の-ソース引数を使用してスタックトレース
LM [K | L | U | V] -リストモジュール
LN <expr>は-記号最寄りのリスト
Pは[= <addr>] [<value>の] - [ステップオーバー]
Q -終了
R [[<reg> [= <expr>は]]] -ビューまたはセットのレジスタ
S [<opts>] <RANGE> <values> -検索メモリ
SX [{E | D | I | N} [- C"CMD1"] [- C2"CMD2"] [- H] {例外|イベント| *}] -イベントフィルター
T [= <address>の] [<expr>は] -トレースに
U [<RANGE>] -逆アセンブル
バージョン-ショーdebuggeeとデバッガのバージョン
X [<* |モジュール>!]<*|記号> a -ビューのシンボル
? <expr>は-表示式
? <expr>は-ディスプレイC + +の式
$ <<filename>は-コマンドファイルからの入力を取るEnterを叩いて...
<expr>は単項OPS:+ -ではないからWO DWO qwo POIハイテクロー
バイナリOPS:+ - * / MOD(%)と(&)XOR(^)または(|)
比較:==(=)<> =!
オペランド:現在の基数での数値、パブリックシンボル、<reg>
<type>は:B(バイト)、W(ワード)、D [S](ダブルワード[記号付き])、
(アスキー)、C(DWORDと文字)、U(ユニコード)、l(リスト)
F(float型)、D(ダブル)、S | S(ASCII / Unicode文字列)
Q(クォドワード)
<PATTERN>:[(NT | <dll-name>)!] <var-name>(<var-name>含めることができると*?)
<RANGE>:<address>の<address>に
:<address>のL <count>のユーザモードのオプション:
〜 -一覧のスレッド状態
〜#S -セットのデフォルトのスレッド
| -リストのプロセスの状態
|#S -デフォルトのプロセスを設定するx86のオプション:
DG <selector> -ダンプセレクタ
<reg>:[E]斧、[E] BX、[E] CX、[E] DX、[E] SI、[E]ディ、[E] BP、[E] SP、[E] IP、[ E] FL、
AL、AH、BL、BH、CL、CH、DL、DH、CS、DS、ES、FS、GS、SS
DR0、DR1、DR2、DR3、DR6、DR7
fpcw、FPSW、fptw、ST0 - ST7、MM0 - MM7
XMM0 - XMM7
<flag>:IOPL、DF、の、TF、SF、ZF、AF、PF、CF、場合
<addr>:#<16ビットプロテクトモードの[セグメント:]アドレス>、
&<V86-mode [seg:]address>完全なデバッガのマニュアルのためのオープンDebugger.chmは
メタコマンド
主に高度なデバッグのために点が付いたものを開始、。 あなたが知っておくべきいくつかの重要なコマンド:
- シンボルサーバーを使用するための。symfixとで。sympath
- ソースサーバーを使用するための。srcfixと。srcpath
- デバッグ拡張を管理するための。負荷、。loadby、。ロード、。チェーン、。setdll
- 。サーバ、。リモートデバッグのためのリモート
それはよくシンボルサーバー、ソースサーバーおよびリモートデバッグに慣れるための時間の価値がある:彼らはあなたの人生をよりずっと楽になります。 下のhelpコマンドの出力は次のとおりです。
0:006>。ヘルプ
。 コマンド:
。放棄する-現在のプロセスを放棄
。allow_exec_cmds [0 | 1] -コントロールの実行コマンド
。allow_image_mapping [0 | 1] -コントロールのオンデマンドイメージファイルのマッピング
。apply_dbp [<options>の] -現在のデータブレークポイントの状態を追加する
コンテキストを登録する
。ASM [<options>の] -設定された分解オプション
。ASM - [<options>の] -明確な分解オプション
。<proc>を添付する-次の実行時 に<proc>に添付
。ブロック{<commands>} -括弧のネストした実行のためのコマンドのセット
。bpsync [0 | 1] -マルチスレッドdebuggeesのための特別なブレークポイントの動作
。ブレイク-外側のループから抜け出します
。ブレイクダンス- KDにブレーク
。キャッシュ[<options>の] -仮想メモリのキャッシュ制御
。呼び出し<FN>(<arg1>、<arg2>、...) -デバッグ対象の関数を実行
。キャッチ{<commands>} -コマンドの失敗をキャッチ
。チェーン-リスト現在の拡張子
。childdbg <0 | 1> -ターンの子プロセスは、オンとオフデバッグまたは
。クライアント-リスト現在アクティブなクライアント
。CloseHandleを[<options>は] [:ハンドル] -指定されたハンドルを閉じる
。続ける-のループを続ける
。copysym [<options>の] <path>に-コピー現在のシンボルファイルのディレクトリへ
。<command line>を作成-新しいプロセスを作成する
。createdir [<options>は] [<path>に] -プロセス生成を制御するオプション
。CXRの<address>は-指定されたアドレスのダンプコンテキストレコード
この後のk個の*は、CXRスタックを提供します
。dbgdbg -現在のデバッガにデバッガをアタッチ
。debug_sw_wow [0 | 1] -ソフトウェアのWOWのエミュレーションとの対話を許可する
。は、デタッチ-現在のプロセス/ダンプからデタッチ
。<file>はdml_file -ファイルからの出力DMLコンテンツ
。dml_flow <start>の<addr> -ショーの基本ブロックのコードフロー
。dml_start [<options>の] -デバッガの活動の航行の概要
。DO {<commands>}(<cond>をは) - <cond>をがゼロになるまで<commands>を実行する
。ドライバー-このコマンドが削除された-使用"LM"またはリロードの- l)。
。ダンプ[<options>の] <filename>は-ホストシステム上でダンプファイルを作成します。
。dvalloc [<options>の] <bytes> -デバッグ対象のVirtualAllocのメモリ
。dvfree [<options>の] <offset> <bytes> -デバッグ対象のVirtualFreeメモリ
。エコー["<string>に"| <string>に] -エコーの文字列
。echotime -出力のデバッガの時間
。echotimestamps [0 | 1] -イベントのトグルタイムスタンプの出力
。ecxr -現在の例外のダンプコンテキストレコード
。effmach [<machine>必要] -変更は、現在のマシンのタイプ
。他に{<commands>} - IF / THEN / ELSE条件付き実行
。ELSIF(<cond>を){<commands>} [<else clauses>] -のif / then / else条件
の実行
。enable_long_status [0 | 1] -デフォルトのベースのダンプLONGタイプ
。enable_unicode [0 | 1] -ダンプUSHORTの配列/ポインタとUnicode文字列
。endsrv <ID> -指定されたエンジンのサーバを無効にする
。endpsrvは-現在のセッションのリモートサーバが終了してしまう。
。enumtag -列挙可能なタグ付きデータ
。event_code -ディスプレイキャッシュされたイベント命令
。イベントログ-最近のイベントの表示ログ
。事象は-表示と使用可能なイベントを選択します。
。eventstr -デバッグ対象が登録したすべてのイベントの文字列を表示
。exepath [<dir>の[;...]] -セットの実行可能ファイルの検索パス
。exepath + [<dir>の[;...]] -追加実行ファイルの検索パス
。exprが-コントロールの式評価
。exptr <address>に-何EXCEPTION_POINTERS用EXRとCXR。。
指定したアドレスのダンプの例外レコード- 。EXR <address>の
。extmatch [<opts>] <PATTERN> -パターンにマッチするすべての拡張子を表示する
。extpath <opts> [<dir>の[;...]] -セットの拡張の検索パス
。extpath + <opts> [<dir>の[;...]] -追加拡張の検索パス
。F + -現在のフレームの呼び出し側にセット現在のスタックフレーム
。F - -現在のフレームの呼び出し先に現在のスタックフレームを設定する
。繊維<address>に-アドレスでの繊維の集合は、コンテキスト
にアドレスが指定されていない場合はリセットされるコンテキスト
。fiximports <PATTERN> -画像のインポートをリンクさせる試み
指定されたコードのアドレスのダンプ関数エントリ- 。fnent <address>の
。fnret <fnaddr> [<retval>] -表示フォーマットされた戻り値
(; <cond>を、<init>を<step>)のための{<commands>} -実行<commands>と
<step> <cond>をされるまで
ゼロに
。force_radix_output [0 | 1] -デフォルトのベースのダンプ整数型
。force_system_init [<options>の] -力保留中のシステムで可能であれば初期化する
。force_tb -強制的に分岐トレースを許可する
。foreachの[OPTS](<alias>に{<tcmds>}){<ecmds>} -のための<ecmds>を実行する
内の各トークン
<tcmds>の出力
。FPO <options>は-コントロールオーバーライドFPOの情報
。フレーム[<FRAME>] -地元の人々のためのセット現在のスタックフレーム
。フォーマット<expr>は-多くのフォーマットで表示される式の結果
。ヘルプ[オプション<options>] -このヘルプを表示する
。holdmem <options>の[範囲] -メモリのデータを保持し、比較する
するif(<cond>を){<commands>} [<else clauses>] -のif / then / else条件
の実行
。ignore_missing_pages [0 | 1] -制御カーネルサマリダンプが欠落して
ページのエラーメッセージ
。imgscan <options>は- PEイメージのスキャンメモリ
。jdinfo <jdi_addr> -のAeDebug情報を解釈する
。kframes <count>の-セットのデフォルトのスタックトレースの深さ
。殺す-現在のプロセスを殺す
。lastevent -最後に発生したイベントを表示
。残す-囲みを終了キャッチ。
。ライン-トグルラインのシンボルロード
。負荷<name>は-拡張子のチェーンには、この拡張モジュールのDLLを追加します。
。loadby <name>の<mod> -モジュールの拡張DLLを追加する
拡張子のチェーンにディレクトリ
。ロケール[<locale>の] -現在のロケールを設定します。
。ログファイル-ディスプレイのログ状態
。logopen [<file>は] -開いている新しいログファイル
。logappend [<file>は] -ログファイルに追加
。logclose -ログファイルを閉じる
。netsyms [0 | 1] -許可/禁止するネットのシンボルパス
。netuse [<options>の] -ネット接続を管理する
。NoShellに-シェルコマンドを無効にする
。noversion -チェックを無効にする拡張機能バージョン
。ofilter <PATTERN> -指定されたパターンに対してフィルタデバッグ出力
。ocommand <prefix>は-コマンドとして与えられた接頭辞を持つ出力を扱う
。<file>はopendump -ダンプファイルを開く
。outmaskの<mask>の-電流出力のマスクのセットビット
。outmask - <mask>の-電流出力のマスク内のビットをクリアします
。pcmdは、[オプション<options>] -コントロールごとに、コマンドプロンプト
。ポップ[<options>の] -ポップアップの状態
。prefer_dml [0 | 1] -制御DMLモードのデフォルト
。printfの"<format>の"、<args…> -書式付き出力
。プロセス[<address>に] -暗黙のプロセスを設定します
にアドレスが指定されていない場合はリセットされ、デフォルト
。prompt_allow [<options>に] -どのような情報コントロールを表示できます
プロンプトで
。プッシュ[<options>の] -プッシュ状態
。quit_lock [<options>の] - InDesignが予期せず終了に対するロックのセッション
。readmem <file>は<RANGE> -ファイルから生のメモリを読み取る
。record_branches [0 | 1] -プロセッサの分岐のコントロールの録音
。リロード[<image.ext> [= <address>の、<size>は]] -リロード記号
。再開-セッションは再起動を要求
。リモート<pipename> -スタートRemote.exeをサーバ
。セキュアな[0 | 1] -ホストの許可しない操作に危険
。send_file <options>は-リモートサーバにファイルを送信する
。サーバ<options>は-始動エンジンサーバ
。サーバ-リスト、アクティブなリモートサーバ
。setdll <name>は-デバッガは最初にこのDLLの拡張子を検索します
。シェル[<command>の] -シェルコマンドを実行
。show_read_failures [<opts>] -制御余分な読み取り障害の出力
。show_sym_failures [<opts>] -制御余分なシンボルの故障出力
。スリープ<milliseconds>を-デバッガでは、指定された期間のためにスリープ状態に
のマシンへのアクセスを許可する場合に役立ちます
NTSD - D上で壊れて
。srcfix [<path extra>] -修正ソースの検索パス
。srcfix + [<path extra>] -追加の固定ソースの検索パス
。srcnoisy [0 | 1] -制御冗長ソースのローディング出力
。srcpath [<dir>の[;...]] -セットのソースの検索パス
。srcpath + [<dir>の[;...]] -追加ソースの検索パス
。step_filter [<opts>] ["<PATTERN> [; <PATTERN> ...]"] -セットのシンボルパターン
ステップ実行時 にスキップする
。symfix [<localsym>] -修正シンボルの検索パス
。symfix + [<localsym>] -追加の固定シンボルの検索パス
。symopt <flags> -セットのシンボルのオプション
。symopt + <flags> -セットのシンボルのオプション
。symopt - <flags> -明確なシンボルのオプション
で。sympath [<dir>の[;...]] -セットのシンボルの検索パス
で。sympath + [<dir>の[;...]] -追加シンボルの検索パス
。スレッド[<address>に] -アドレスでのスレッドのセットは、コンテキスト
リセットされ、デフォルトのコンテキストにアドレスが指定されていない場合
。時間-セッションの時間の情報が表示されます。
。ttimeは-スレッドの時間の情報が表示されます。
。tlistの-リスト実行中のプロセス
。typeopt <flags> -セット/クリアタイプのオプション
。<name>をアンロード-拡張DLLのリストから、この拡張モジュールのDLLを削除する
。unloadall -拡張DLLのリストからすべての拡張DLLを削除する
。ウェイク- 。sleep'ingデバッガをウェイクアップさせる
。ながら(<cond>を){<commands>} - <cond>を非ゼロのときに<commands>を実行する
。writemem <file>は<RANGE> -ファイルに生のメモリを書き込む取得するにはデバッガのディレクトリに"。HH <command>に"またはオープンDebugger.chmはを使用してください
コマンドに関する詳細なドキュメント。
拡張コマンド
それらは、から始める!、通常、特定の領域に対して、マネージデバッグのためのSOSの拡張コマンドと同様に。 あなたは!<EXT>を使用することができます。!exts.helpように、拡張子のコマンドを一覧表示するのに役立ちます。 高度なシステムのデバッグのために、メモリリーク、デッドロックなどを検出するように、あなたはそれらの拡張コマンドに非常に精通する必要があります。
SOS
概要
SOSは、ストライクの息子(私に理由を聞かないでください)、マネージデバッグ用のデバッグ拡張の頭字語です。 私はそれがCLRデバッグのためのCLRチームによって発明されたので、長い時間を回避されていると信じて、そしてウェブ上で良い情報がたくさんあります。 いくつかの推奨測定値:
- SOSデバッグ拡張機能 MSDNの
- ジェイソンザンダーのブログ投稿: CLRのSOSデバッグ
CLRの各バージョンは独自のSOSを(。NET Framework 3.5がまだCLR 2.0を使用し、Silverlightが独自のCLRを持っている)があります。
Windowsの\ clr10用\プログラムファイル\デバッグツール:Cのディレクトリ
2007年9月19日7時01 PM 948784 sos.dll
1ファイル(秒)948784バイトCのディレクトリ:\ Program Files \ MicrosoftのSilverlightを\ 2.0.31005.0
2008年10月5日午前2時16分は495424 sos.dll午前
1ファイル(秒)495424バイトCのディレクトリ:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v1.1.4322が
2004年7月15日0:35 319488 SOS.dll午前
1ファイル(秒)319488バイトCのディレクトリ:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の
2008年7月27日10:03 392184 SOS.dll午前
1ファイル(秒)392184バイト
コマンド
SOS実行時のヘルプには、ほとんど少数の試行錯誤以外の他のドキュメントと、いくつかのフラストレーションを必要としないほど素晴らしいです。 ![]()
0:016>!ヘルプ
---------------------------
SOSは、管理のデバッグを支援するために設計されたデバッガ拡張DLLです。
プログラム。 関数は、その後およその順にカテゴリ別に掲載されています
重要性。 人気の高い機能のショートカット名は、括弧内に記載されています。
タイプは、その関数に関する詳細な情報は"!<FunctionName>がを助ける"。オブジェクトの検査の検査コードとスタック
---------- ----------
DumpObj(そう)のスレッド
DumpArray(DA)CLRStack
DumpStackObjects(DSO)IP2MD
SOSのU
DumpVC DumpStack
gcrootののEEStack
ObjSizeではGCInfo
FinalizeQueue EHInfo
れるPrintException(PE)COMState
TraverseHeap BPMDCLRのデータ構造の診断ユーティリティを検証する
---------- ----------
DumpDomain VerifyHeap
EEHeap VerifyObj
Name2EEののFindRoots
するsyncblk HeapStat
DumpMT GCWhere
DumpClass ListNearObj(LNO)
DumpMDのGCHandles
Token2EE GCHandleLeaks
EEVersion FinalizeQueue(FQ)
DumpModuleのFindAppDomain
ThreadPoolのSaveModule
DumpAssembly PROCINFO
DumpSigElem StopOnException(SOE)
調べるのにDumpRuntimeTypes
DumpSig VMMap
RCWCleanupListのvmstat
DumpIL MinidumpMode
AnalyzeOOM(AO)その他のGCの歴史を調べる
---------- ----------
HistInit FAQ
HistStats
HistRoot
HistObj
HistObjFind
HistClear
サンプルのデバッグのデモ
私は(以前の記事で同じ最も簡単なSilverlightアプリケーションを使用します。 Visual StudioでのSilverlightのデバッグ SOSでデバッグをWinDbgを実証するために):
ここに私の注釈とデバッグログは、(/ /で始まる)です。
/ /シンボルサーバーを使用するシンボルパスを設定する
0:013>で。sympath
シンボルの検索パスは次のとおりです。<empty>
0:013> symfix C:\ユーザー\ ningz \のAppData \ローカル\ Tempに\記号
0:013>で。sympath
シンボルの検索パスは次のとおりです。SRV * C:\ユーザー\ ningz \のAppData \ローカル\ Tempに\記号\ * \記号\記号/ /デバッグしているアプリケーションのPDBのパスを追加します。
0:013> sympath +。"C:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクト\ SilverlightApplication1 \ SilverlightApplication1の\ Bin \ Debug"に
シンボルの検索パスは次のとおりです。SRV * C:\ユーザー\ ningz \のAppData \ローカル\ Tempに\記号*
http://msdl.microsoft.com/download/symbols;
C:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクト\ SilverlightApplication1 \ SilverlightApplication1 \ビン\デバッグ/ /すべてのシンボルを再読み込み
0:013>。リロード
現在のモジュールのリロード
/ /ソースサーバーを使用するようにソースパスを設定する
0:013>。srcpath
ソースの検索パスは次のとおりです。<empty>
0:013>。srcfix
ソースの検索パスは次のとおりです。SRV *
0:013> srcpath +。"C:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクト\ SilverlightApplication1 \ SilverlightApplication1"
ソースの検索パスは次のとおりです。SRV * C:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクト\ SilverlightApplication1 \ SilverlightApplication1/ /負荷のSOS。 注意してください:
/ / 1。 それはmscorwksは、Silverlightのcoreclrに置き換えているようだ
/ / 2。 。代わりにloadby、次を使用することもできます"C:\プログラムファイル\のMicrosoft Silverlight \ 2.0.31005.0 \ sos.dll"をロードする。
0:013>。loadby SOS coreclr
ロードされたC:\ Program Files \ MicrosoftのSilverlightは\ 2.0.31005.0 \ SOS拡張DLL/ /ボタンクリックイベントハンドラのブレークポイントを設定する
0:013>!bpmd SilverlightApplication1 SilverlightApplication1.Page.Button_Click
1メソッドを発見した...
のMethodDesc = 03983a30
保留中のブレークポイントを追加...
0:013> BL
0 E 0428215b 0001(0001)0 :****
0:013> G
modloadは:70800000 7080c000 C:Windowssystem32dwmapi.dll/ /ボタンをクリックし、WinDbgに侵入
ブレークポイント0ヒット
*** WARNING:SilverlightApplication1.dllためのチェックサムを確認できません
!SilverlightApplication1 Button_Click:
04850398 55プッシュEBP
統合されたマネージデバッグは、ローカル変数の列挙をサポートしていません。
参照してくださいhttp://dbg/managed.htm詳細を。
フレーム処理は、HRESULT 0x80004005が、障害が発生した管理対象/ /比較!スレッドと〜*出力
0:005>!スレッド/ /リストマネージスレッドのみ
スレッドカウント:3
UnstartedThread:0
BackgroundThread:3
PendingThread:0
DeadThread:0
ホストされているランタイム:はい
プリエンプティブなGC割り当てとロック
ID OSID ThreadOBJ州立GCコンテキストのドメインは、APTの例外をカウント
5 1 1b08 043576e0 220バリア04f9f214:04f9ffe8 06f529d8 0 STA
9 2 928 043689c8 B220有効00000000:00000000 0433c738 0 MTA(ファイナライザ)
10 3 1e8c 06f509d0 1220 00000000:00000000 0433c738 0 Uknを有効
0:005>〜リスト* / /すべてのスレッド
0 ID:162c.1a28サスペンド:1 TEB:7ffde000凍らない
スタート!IexploreのwWinMainCRTStartup(00a52d79)
優先度:0優先度クラス:32アフィニティ:3
2 ID:162c.1020サスペンド:1 TEB:7ffdc000凍らない
スタート!OLE32 CRpcThreadCache::RpcWorkerThreadEntry(76dfe0cc)
優先度:0優先度クラス:32アフィニティ:3
3 ID:162c.1e00サスペンド:1 TEB:7ffda000凍らない
スタート!NTDLL TppWaiterpThread(778ab61b)
優先度:0優先度クラス:32アフィニティ:3
4 ID:162c.1f00サスペンド:1 TEB:7ffd9000凍らない
スタート!MSVCRT _endthreadex 0 x6f(76162da8)
優先度:0優先度クラス:32アフィニティ:3
。 5 ID:162c.1b08サスペンド:1 TEB:7ffd8000凍らない
スタート!IEFRAME CTabWindow::_TabWindowThreadProc(6c163fdb)
優先度:0優先度クラス:32アフィニティ:3
7 ID:162c.170サスペンド:1 TEB:7ffd6000凍らない
スタート!npctrl CXcpDispatcher::DispatcherTimerCallback(6a6d16f4)
優先度:0優先度クラス:32アフィニティ:3
8 ID:162c.1cd0サスペンド:1 TEB:7ffd5000凍らない
スタート!coreclr DebuggerRCThread::ThreadProcStatic(640eb5cd)
優先度:0優先度クラス:32アフィニティ:3
9 ID:162c.928サスペンド:1 TEB:7ffd4000凍らない
スタート!coreclrスレッド::intermediateThreadProc(63fb8e4f)
優先度:0優先度クラス:32アフィニティ:3
10 ID:162c.1e8cサスペンド:1 TEB:7ffd3000凍らない
スタート!coreclrスレッド::intermediateThreadProc(63fb8e4f)
優先度:0優先度クラス:32アフィニティ:3
11 ID:162c.1facサスペンド:1 TEB:7ffaf000凍らない
スタート!agcore CMulticoreTaskScheduler::WorkerThread(660547de)
優先度:0優先度クラス:32アフィニティ:3
12 ID:162c.1b78サスペンド:1 TEB:7ffae000凍らない
スタート!agcore CMulticoreTaskScheduler::WorkerThread(660547de)
優先度:0優先度クラス:32アフィニティ:3
13イド:162c.1d18サスペンド:1 TEB:7ffdb000凍らない
スタート!NTDLL RtlUserThreadStart(778c9a78)
優先度:0優先度クラス:32アフィニティ:3
フレーム処理は、HRESULT 0x80004005が、障害が発生した管理対象
統合されたマネージデバッグは、ローカル変数の列挙をサポートしていません。
参照してくださいhttp://dbg/managed.htm詳細を。/ /比較する!clrstack&kの出力
0:005>!clrstack - P / /リストには、スタックフレームを管理するだけ
OSスレッドID:0x1b08(5)
ESP EIP
0450f850 04800398 SilverlightApplication1.Page.Button_Click(System.Objectの、System.Windows.RoutedEventArgs)
パラメータ:
この(<CLR reg>)= 0x04f59c78
送信者(<CLR reg>)= 0x04f5b948
E(0x0450f854)= 0x04f9f1f00450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick()
パラメータ:
この(0x0450f864)= 0x04f5b9480450f870 048cdd10 System.Windows.Controls.Button.OnClick()
パラメータ:
この= <no DATA>0450f880 048cdc3d
パラメータ:
この(0x0450f884)= 0x04f5b948
E(0x0450f880)= 0x04f9f1880450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp(System.Windows.Controls.Control、いるSystem.EventArgs)
パラメータ:
CTRL = <no DATA>
E = <no DATA>0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent(IntPtrを、IntPtrを、Int32型は、System.String)
パラメータ:
unmanagedObj(0x0450f8f8)= 0x04355c48
unmanagedObjArgs(0x0450f8f4)= 0x0707be00
argsTypeIndex(0x0450f928)= 0x000000a9
eventNameの(0x0450f924)= 0x04f9f16c0450fa74 63ef17b0 [GCFrame:0450fa74]
[ContextTransitionFrame:0450fb30] 0450fb30 63ef17b0
0450fc28 63ef17b0 [UMThkCallFrame:0450fc28]
0:005> KP / /リストのすべてのスタックフレーム
のChildEBp RetAddr
0450f868はSilverlightApplication1!Button_Click(<HRESULT 0x80004001>を)048cde0d
0450f868 048cdd10 System_Windows!System.Windows.Controls.Primitives.ButtonBase.OnClick(<HRESULT 0x80004001>)+0 x5d
0450f878 048cdc3d System_Windows!System.Windows.Controls.Button.OnClick(<HRESULT 0x80004001>)+0 x48の
0450f888 048cdba1 System_Windows!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(<HRESULT 0x80004001>)+0 X85
0450f898 0483a0e7 System_Windows!System.Windows.Controls.Control.OnMouseLeftButtonUp(<HRESULT 0x80004001>)+0 X41
0450f91c 63ef17b0 System_Windows!MS.Internal.JoltHelper.FireEvent(<HRESULT 0x80004001>)+0 x1b7
0450f934 63ef5f98 coreclr!CallDescrWorker 0 X33
0450f9b0 63f032bc coreclr!CallDescrWorkerWithHandler 0 x8e
0450f9d0 63f0345c coreclr!ForwardCallToManagedMethod 0 X55
0450faf4 63fc4abf coreclr!DoUMThunkCallWorker 0 x199
0450fbe0 04c513d2 coreclr!DoUMThunkCall 0 x1b4
警告:フレームのIPではない任意の既知のモジュールです。 以下のフレームは間違っている可能性があります。
0450fc10 6607e0db 0x4c513d2
!0450fc70 6a6dc1fc agcore CCoreServices::CLR_FireEvent 0 x183
フレーム処理は、HRESULT 0x80004005が、障害が発生した管理対象
0450fc84 6a6dc187 npctrl CommonBrowserHost:!:CLR_FireEvent 0 X2A
!0450fcc8 6a6dc048 npctrl CControlBase::ScriptCallback 0 x366
0450fd08 6a6dc013 npctrl CXcpDispatcher:!:OnScriptCallback 0 XEE
!0450fd14 6a6dbfef npctrl CXcpDispatcher::OnWindowMessage 0 X3A
0450fd2c 7731f8d2 npctrl CXcpDispatcher::WindowProcに0 x7f
0450fd58 7731f794 USER32!InternalCallWinProc 0 X23
0450fdd0 77320008 USER32!UserCallWinProcCheckWow 0 x14b/ /ヒープを調べ、、強い型指定されたオブジェクトのヒープの利便性の点に注意してください。
/ /代わりに、ネイティブヒープのように、型未指定のバイトの
0:005>!SOSの型SilverlightApplication1
アドレスのMTのサイズ
04f4f31c 046336b0 36
04f59c78 04633a6c 68
合計2個のオブジェクト
統計:
MTカウントTotalSizeのクラス名
046336b0 1 36 SilverlightApplication1.App
04633a6c 1 68 SilverlightApplication1.Page
合計2個のオブジェクト
0:005>!行う04f59c78
名前:SilverlightApplication1.Page
MethodTableの:04633a6c
EEClassに:0463196c
サイズ:68(0x44の)バイト
ファイル:SilverlightApplication1、バージョン= 1.0.0.0、文化=中立的なPublicKeyToken = nullを
フィールド:
MTのフィールドオフセット型VTのAttr値の名前
047d97a0 40000dc 4 ... al.NativeResource 0インスタンス04f5a5c0 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0インスタンス0000万_valueTable
047d9874 40000e0 C ... reTypeEventHelper 0インスタンス04f5a600 _coreTypeEventHelper
04856388 40000e3 10 ... bject、mscorlibの]] 0インスタンス04f79a58 _treeChildren
047ae03c 40000e4 14 ... rnal.IManagedPeer 0インスタンス0000万_treeParent
03d50a90 40000dd 2B0 System.IntPtr 1共有静的StaticNativePointer
>>ドメイン:値0433c738:NotInit 06f529d8:00000000 <<
03d50f28 40000de 2B4可能System.Boolean 1共有静的_isCoreCreate
>>ドメイン:値0433c738:NotInit 06f529d8:0 <<
047ae384 40000e1 8 ....のDependencyObject 0共有静的PropertyReferencesHolder
>>ドメイン:値0433c738:NotInit 06f529d8:04f489b8 <<
04661618 40000e2 C ... flection.Assembly 0 _executingAssembly静的共有
>>ドメイン:値0433c738:NotInit 06f529d8:00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0インスタンス0000万m_pAP
047d7404 40000e8 10 ... ependencyProperty 0共有静的OpacityProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a4a8 <<
047d7404 40000e9 14 ... ependencyProperty 0共有静的ClipProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a4d0 <<
047d7404 40000ea 18 ... ependencyProperty 0共有静的RenderTransformProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a4f8 <<
047d7404 40000eb 1C ... ependencyProperty 0共有静的OpacityMaskProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a50c <<
047d7404 40000ec 20 ... ependencyProperty 0共有静的RenderTransformOriginProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a534 <<
047d7404 40000ed 24 ... ependencyProperty 0共有静的IsHitTestVisibleProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a548 <<
047d7404 40000ee 28 ... ependencyProperty 0共有静的VisibilityProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a570 <<
047d7404 40000ef 2C ... ependencyProperty 0共有静的RenderSizeProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a598 <<
047d7404 40000f0 30 ... ependencyProperty 0共有静的UseLayoutRoundingProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a5ac <<
00000000 4000108 1C 0インスタンス0000万のBindingValidationError
04856ae4 400010a 20 ... DPChanged angedEventHandler 0インスタンス0000万
048bc8a4 400010b 24 ... DataContextChanged angedEventHandler 0インスタンス0000万
03d50f28 400010c 2C可能System.Boolean 1インスタンス0 _isDataContextBound
0481f43c 400010d 28 ... _sizeChanged angedEventHandler 0インスタンス0000万
047d7404 40000f2 34 ... ependencyProperty 0共有静的TriggersProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a144 <<
047d7404 40000f3 38 ... ependencyProperty 0共有静的ResourcesProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a158 <<
047d7404 40000f4 3C ... ependencyProperty 0共有静的LanguageProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a180 <<
047d7404 40000f5 40 ... ependencyProperty 0共有静的ActualWidthProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a194 <<
047d7404 40000f6 44 ... ependencyProperty 0共有静的ActualHeightProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a1a8 <<
047d7404 40000f7 48 ... ependencyProperty 0共有静的WidthProperty
>>ドメイン:値0433c738:NotInit 06f529d8:04f5a1bc <<
047d7404 40000f8 4C ... ependencyProperty 0は静的HeightPropertyを共有
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1d0 <<
047d7404 40000f9 50 ...ependencyProperty 0 shared static MinWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1e4 <<
047d7404 40000fa 54 ...ependencyProperty 0 shared static MaxWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1f8 <<
047d7404 40000fb 58 ...ependencyProperty 0 shared static MinHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a20c <<
047d7404 40000fc 5c ...ependencyProperty 0 shared static MaxHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a220 <<
047d7404 40000fd 60 ...ependencyProperty 0 shared static HorizontalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a234 <<
047d7404 40000fe 64 ...ependencyProperty 0 shared static VerticalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a248 <<
047d7404 40000ff 68 ...ependencyProperty 0 shared static MarginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a25c <<
047d7404 4000100 6c ...ependencyProperty 0 shared static StyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a284 <<
047d7404 4000101 70 ...ependencyProperty 0 shared static ParentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2ac <<
047d7404 4000102 74 ...ependencyProperty 0 shared static NameProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2c0 <<
047d7404 4000103 78 ...ependencyProperty 0 shared static TagProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2d4 <<
047d7404 4000104 7c ...ependencyProperty 0 shared static TagInternalProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2fc <<
04851464 4000105 80 ...ndows.RoutedEvent 0 shared static LoadedEvent
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a420 <<
047d7404 4000106 84 ...ependencyProperty 0 shared static CursorProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a440 <<
047d7404 4000107 88 ...ependencyProperty 0 shared static InstanceDelegateStoreProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a468 <<
047d7404 4000109 8c ...ependencyProperty 0 shared static DataContextProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a494 <<
047a1e2c 400010e 90 ...rence, mscorlib]] 0 shared static _staticDelegateList
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
00000000 4000264 30 ...angedEventHandler 0 instance 00000000 IsEnabledChanged
047d7404 4000252 430 ...ependencyProperty 0 shared static IsTabStopProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ce4 <<
047d7404 4000253 434 ...ependencyProperty 0 shared static TabIndexProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cf8 <<
047d7404 4000254 438 ...ependencyProperty 0 shared static TemplateProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d20 <<
047d7404 4000255 43c ...ependencyProperty 0 shared static TabNavigationProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d48 <<
047d7404 4000256 440 ...ependencyProperty 0 shared static PaddingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d70 <<
047d7404 4000257 444 ...ependencyProperty 0 shared static HorizontalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d98 <<
047d7404 4000258 448 ...ependencyProperty 0 shared static VerticalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dc0 <<
047d7404 4000259 44c ...ependencyProperty 0 shared static BackgroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59de8 <<
047d7404 400025a 450 ...ependencyProperty 0 shared static BorderBrushProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dfc <<
047d7404 400025b 454 ...ependencyProperty 0 shared static BorderThicknessProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e10 <<
047d7404 400025c 458 ...ependencyProperty 0 shared static FontSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e24 <<
047d7404 400025d 45c ...ependencyProperty 0 shared static FontFamilyProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e4c <<
047d7404 400025e 460 ...ependencyProperty 0 shared static ForegroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e60 <<
047d7404 400025f 464 ...ependencyProperty 0 shared static FontWeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e88 <<
047d7404 4000260 468 ...ependencyProperty 0 shared static FontStyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59eb0 <<
047d7404 4000261 46c ...ependencyProperty 0 shared static FontStretchProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ed8 <<
047d7404 4000262 470 ...ependencyProperty 0 shared static DefaultStyleKeyProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59eec <<
047d7404 4000263 474 ...ependencyProperty 0 shared static IsEnabledProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 shared static _resourceDictionaryCache
>> Domain:Value 0433c738:NotInit 06f529d8:04f5cae4 <<
03cf5668 4000266 47c System.Object[] 0 shared static _controlDelgates
>> Domain:Value 0433c738:NotInit 06f529d8:04f59f14 <<
047d7404 4000501 77c ...ependencyProperty 0 shared static ContentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cd0 <<
04852580 4000002 34 ...ows.Controls.Grid 0 instance 04f79770 LayoutRoot
04852a10 4000003 38 ...s.Controls.Button 0 instance 04f5b948 button
03d50f28 4000004 3c System.Boolean 1 instance 1 _contentLoaded上記の/ / 2行は、ページオブジェクトのボタンのオブジェクトです。
我々は、後でそれを参照するので、/ /そのアドレス04f5b948を 、覚えている
/ /我々は、SOSのコマンドを介してボタンオブジェクトに同じアドレスを取得することができます。
0:005>!SOSの- mtを04852a10
アドレスのMTのサイズ
04f5b948 04852a10 92
合計1のオブジェクト
統計:
MTカウントTotalSizeのクラス名
04852a10 1 92 System.Windows.Controls.Button
合計1のオブジェクト
はGCがまだないので0:005>!gcwhere 04f5b948 / /ボタンは、gen0になります
アドレス世代のヒープセグメントが割り当てられているサイズを開始
04f5b948 0 0 04f40000 04f41000 04f9fff4に0x5c(92)
0:005>!gcrootの04f5b948 / /ボタンオブジェクトへの参照を保持している誰が参照してください
注:スタック上にあるルーツが偽陽性になることがあります。 実行"!gcrootを助ける"ために
より多くの情報。
/ /レジストリの参照
ECX:ルート:04f59c78(SilverlightApplication1.Page) - >
04f5b948(System.Windows.Controls.Button) - >
EDX:ルート:04f5b948(System.Windows.Controls.Button) - >
/ /スタックの参照
スレッド5 OSTHread 1b08をスキャン
ESP:450f860:ルート:04f5ca18(System.Windows.RoutedEventHandler) - >
04f59c78(SilverlightApplication1.Page) - >
04f5b948(System.Windows.Controls.Button) - >
ESP:450f864:ルート:04f5b948(System.Windows.Controls.Button) - >
ESP:450f874:ルート:04f5b948(System.Windows.Controls.Button) - >
ESP:450f884:ルート:04f5b948(System.Windows.Controls.Button) - >
ESP:450f894:ルート:04f5b948(System.Windows.Controls.Button) - >
ESP:450f8d4:ルート:04f5b948(System.Windows.Controls.Button) - >
ESP:450f8e4:ルート:04f5b948(System.Windows.Controls.Button) - >
スキャンスレッド9 OSTHread 928
スレッド10 OSTHread 1e8cをスキャン
/ /ドメインを参照する
DOMAIN(06F529D8):ハンドル(固定):46412f8:ルート:05f44260(System.Objectの[])->
04f45234(System.Collections.Generic.List`1 [[はSystem.Object、mscorlibの]])->
04f59980(System.Objectの[])->
04f59c78(SilverlightApplication1.Page) - >
04f5b948(System.Windows.Controls.Button) - >
フレーム処理は、HRESULT 0x80004005が、障害が発生した管理対象
統合されたマネージデバッグは、ローカル変数の列挙をサポートしていません。
参照してくださいhttp://dbg/managed.htm詳細を。// examine the button object itself
0:005> !do 04f5b948
Name: System.Windows.Controls.Button
MethodTable: 04852a10
EEClass: 0482e5f0
Size: 92(0x5c) bytes
File: c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll
Fields:
MT Field Offset Type VT Attr Value Name
047d97a0 40000dc 4 ...al.NativeResource 0 instance 04f5bd58 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 instance 04f5c0bc _valueTable
047d9874 40000e0 c ...reTypeEventHelper 0 instance 04f5bd88 _coreTypeEventHelper
04856388 40000e3 10 ...bject, mscorlib]] 0 instance 04f5bee8 _treeChildren
047ae03c 40000e4 14 ...rnal.IManagedPeer 0 instance 04f79770 _treeParent
03d50a90 40000dd 2b0 System.IntPtr 1 shared static StaticNativePointer
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
03d50f28 40000de 2b4 System.Boolean 1 shared static _isCoreCreate
>> Domain:Value 0433c738:NotInit 06f529d8:0 <<
047ae384 40000e1 8 ....DependencyObject 0 shared static PropertyReferencesHolder
>> Domain:Value 0433c738:NotInit 06f529d8:04f489b8 <<
04661618 40000e2 c ...flection.Assembly 0 shared static _executingAssembly
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
047d0b90 40000f1 18 ...rs.AutomationPeer 0 instance 00000000 m_pAP
047d7404 40000e8 10 ...ependencyProperty 0 shared static OpacityProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4a8 <<
047d7404 40000e9 14 ...ependencyProperty 0 shared static ClipProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4d0 <<
047d7404 40000ea 18 ...ependencyProperty 0 shared static RenderTransformProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4f8 <<
047d7404 40000eb 1c ...ependencyProperty 0 shared static OpacityMaskProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a50c <<
047d7404 40000ec 20 ...ependencyProperty 0 shared static RenderTransformOriginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a534 <<
047d7404 40000ed 24 ...ependencyProperty 0 shared static IsHitTestVisibleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a548 <<
047d7404 40000ee 28 ...ependencyProperty 0 shared static VisibilityProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a570 <<
047d7404 40000ef 2c ...ependencyProperty 0 shared static RenderSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a598 <<
047d7404 40000f0 30 ...ependencyProperty 0 shared static UseLayoutRoundingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a5ac <<
00000000 4000108 1c 0 instance 00000000 BindingValidationError
04856ae4 400010a 20 ...angedEventHandler 0 instance 00000000 DPChanged
048bc8a4 400010b 24 ...angedEventHandler 0 instance 00000000 DataContextChanged
03d50f28 400010c 2c System.Boolean 1 instance 0 _isDataContextBound
0481f43c 400010d 28 ...angedEventHandler 0 instance 00000000 _sizeChanged
047d7404 40000f2 34 ...ependencyProperty 0 shared static TriggersProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a144 <<
047d7404 40000f3 38 ...ependencyProperty 0 shared static ResourcesProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a158 <<
047d7404 40000f4 3c ...ependencyProperty 0 shared static LanguageProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a180 <<
047d7404 40000f5 40 ...ependencyProperty 0 shared static ActualWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a194 <<
047d7404 40000f6 44 ...ependencyProperty 0 shared static ActualHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1a8 <<
047d7404 40000f7 48 ...ependencyProperty 0 shared static WidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1bc <<
047d7404 40000f8 4c ...ependencyProperty 0 shared static HeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1d0 <<
047d7404 40000f9 50 ...ependencyProperty 0 shared static MinWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1e4 <<
047d7404 40000fa 54 ...ependencyProperty 0 shared static MaxWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1f8 <<
047d7404 40000fb 58 ...ependencyProperty 0 shared static MinHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a20c <<
047d7404 40000fc 5c ...ependencyProperty 0 shared static MaxHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a220 <<
047d7404 40000fd 60 ...ependencyProperty 0 shared static HorizontalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a234 <<
047d7404 40000fe 64 ...ependencyProperty 0 shared static VerticalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a248 <<
047d7404 40000ff 68 ...ependencyProperty 0 shared static MarginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a25c <<
047d7404 4000100 6c ...ependencyProperty 0 shared static StyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a284 <<
047d7404 4000101 70 ...ependencyProperty 0 shared static ParentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2ac <<
047d7404 4000102 74 ...ependencyProperty 0 shared static NameProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2c0 <<
047d7404 4000103 78 ...ependencyProperty 0 shared static TagProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2d4 <<
047d7404 4000104 7c ...ependencyProperty 0 shared static TagInternalProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2fc <<
04851464 4000105 80 ...ndows.RoutedEvent 0 shared static LoadedEvent
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a420 <<
047d7404 4000106 84 ...ependencyProperty 0 shared static CursorProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a440 <<
047d7404 4000107 88 ...ependencyProperty 0 shared static InstanceDelegateStoreProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a468 <<
047d7404 4000109 8c ...ependencyProperty 0 shared static DataContextProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a494 <<
047a1e2c 400010e 90 ...rence, mscorlib]] 0 shared static _staticDelegateList
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
00000000 4000264 30 ...angedEventHandler 0 instance 00000000 IsEnabledChanged
047d7404 4000252 430 ...ependencyProperty 0 shared static IsTabStopProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ce4 <<
047d7404 4000253 434 ...ependencyProperty 0 shared static TabIndexProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cf8 <<
047d7404 4000254 438 ...ependencyProperty 0 shared static TemplateProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d20 <<
047d7404 4000255 43c ...ependencyProperty 0 shared static TabNavigationProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d48 <<
047d7404 4000256 440 ...ependencyProperty 0 shared static PaddingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d70 <<
047d7404 4000257 444 ...ependencyProperty 0 shared static HorizontalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d98 <<
047d7404 4000258 448 ...ependencyProperty 0 shared static VerticalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dc0 <<
047d7404 4000259 44c ...ependencyProperty 0 shared static BackgroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59de8 <<
047d7404 400025a 450 ...ependencyProperty 0 shared static BorderBrushProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dfc <<
047d7404 400025b 454 ...ependencyProperty 0 shared static BorderThicknessProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e10 <<
047d7404 400025c 458 ...ependencyProperty 0 shared static FontSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e24 <<
047d7404 400025d 45c ...ependencyProperty 0 shared static FontFamilyProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e4c <<
047d7404 400025e 460 ...ependencyProperty 0 shared static ForegroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e60 <<
047d7404 400025f 464 ...ependencyProperty 0 shared static FontWeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e88 <<
047d7404 4000260 468 ...ependencyProperty 0 shared static FontStyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59eb0 <<
047d7404 4000261 46c ...ependencyProperty 0 shared static FontStretchProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ed8 <<
047d7404 4000262 470 ...ependencyProperty 0 shared static DefaultStyleKeyProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59eec <<
047d7404 4000263 474 ...ependencyProperty 0 shared static IsEnabledProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 shared static _resourceDictionaryCache
>> Domain:Value 0433c738:NotInit 06f529d8:04f5cae4 <<
03cf5668 4000266 47c System.Object[] 0 shared static _controlDelgates
>> Domain:Value 0433c738:NotInit 06f529d8:04f59f14 <<
03cf44e8 40002b4 34 System.Object 0 instance 00000000 _treeContent
047d7404 40002b3 530 ...ependencyProperty 0 shared static ContentTemplateProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5bd30 <<
047d7404 40002b5 534 ...ependencyProperty 0 shared static ContentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5bd44 <<
03d50f28 40005aa 40 System.Boolean 1 instance 1 _isLoaded
03d50f28 40005ab 41 System.Boolean 1 instance 1 _isMouseCaptured
03d50f28 40005ac 42 System.Boolean 1 instance 0 _isSpaceKeyDown
03d50f28 40005ad 43 System.Boolean 1 instance 0 _isMouseLeftButtonDown
04852208 40005ae 48 System.Windows.Point 1 instance 04f5b990 _mousePosition
048b5f98 40005af 38 ...mation.Storyboard 0 instance 00000000 _currentState
03d50f28 40005b0 44 System.Boolean 1 instance 0 _suspendStateChanges
0481fae0 40005b1 3c ...outedEventHandler 0 instance 04f5ca18 Click
047d7404 40005a6 7e0 ...ependencyProperty 0 shared static ClickModeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5ba7c <<
047d7404 40005a7 7e4 ...ependencyProperty 0 shared static IsFocusedProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5bb38 <<
047d7404 40005a8 7e8 ...ependencyProperty 0 shared static IsMouseOverProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5bbd8 <<
047d7404 40005a9 7ec ...ependencyProperty 0 shared static IsPressedProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5bc40 <<// dump button.Click field (9 lines above)
0:005> !do 04f5ca18
Name: System.Windows.RoutedEventHandler
MethodTable: 0481fae0
EEClass: 0482c99c
Size: 32(0x20) bytes
File: c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll
Fields:
MT Field Offset Type VT Attr Value Name
03cf44e8 40001e0 4 System.Object 0 instance 04f59c78 _target
04663c58 40001e1 8 ...ection.MethodBase 0 instance 00000000 _methodBase
03d50a90 40001e2 c System.IntPtr 1 instance 463c08c _methodPtr
03d50a90 40001e3 10 System.IntPtr 1 instance 0 _methodPtrAux
03cf44e8 40001e4 14 System.Object 0 instance 00000000 _invocationList
03d50a90 40001e5 18 System.IntPtr 1 instance 0 _invocationCount0:005> !do -nofields 04f59c78 // verify _target is page
Name: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Size: 68(0x44) bytes
File: SilverlightApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null// verify _methodPtr points to Button_Click
// see how they are all linked together
0:005> ln 463c08c
(0463c08c) SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)
0:005> u 463c08c // jit-ed method stub
SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs):
0463c08c b8303a6304 mov eax,4633A30h
0463c091 89ed mov ebp,ebp
0463c093 e900431c00 jmp SilverlightApplication1!Button_Click ( 04800398 )
0463c098 0000 add byte ptr [eax],al
0463c09a 0000 add byte ptr [eax],al
0463c09c 0000 add byte ptr [eax],al
0463c09e 0000 add byte ptr [eax],al
0463c0a0 0000 add byte ptr [eax],al
0:005> u eip // jit-ed native code
SilverlightApplication1!Button_Click:
04800398 55 push ebp
04800399 8bec mov ebp,esp
0480039b 83ec08 sub esp,8
0480039e 894dfc mov dword ptr [ebp-4],ecx
048003a1 8955f8 mov dword ptr [ebp-8],edx
048003a4 833d7435630400 cmp dword ptr ds:[4633574h],0
048003ab 7405 je SilverlightApplication1!Button_Click+0x1a (048003b2)
048003ad e8862a895f call coreclr!JIT_DbgIsJustMyCode (64092e38)
0:005> !ip2md 04800398
MethodDesc: 04633a30
Method Name: SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)
Class: 0463196c
MethodTable: 04633a6c
mdToken: 06000008
Module: 046333b4
IsJitted: yes
CodeAddr: 04800398
0:005> !dumpil 04633a30
ilAddr = 047e03fe
IL_0000: nop
IL_0001: ret
When I have time, I may write a blog post on CLR internals, to demonstrate how objects are laid out in memory, how method calls are dispatched etc.
結論
This is a long post, but still it barely constitute an overview of WinDbg and SOS. Good understanding of CLR is important for coding and debugging, WinDbg with SOS is the best tool to explore CLR and do advanced debugging. Hope this short yet long post will help you get started in exploring CLR and Silverlight. ありがとう!








最近のコメント