ホーム > デバッグSilverlightは > SilverlightのデバッグSOSのでWinDbgと

SilverlightのデバッグWinDbgとSOSをと

導入

ポストでは、以前のSilverlightのスタジオのVisualデバッグと 、私はアプリケーションを実証は、Visual管理Studioには、最も強力なデバッグ用の便利なツールです。 しかし、一部の高度なデバッグのシナリオで、/スレッドは、カーネルのデバッグメモリリーク、デッドロック、暴走プロセスのように、/ UIが等、デバッグ(または、のNTSD cdbをWinDbgを、Kd)が通常好まれる場合は、だけでなく、オプションでリモート/クラッシュを進んだ。

Windows用デバッグツール

概要

WinDbgはの一部であるWindowsのツールのデバッグパッケージ

image_thumb5

WinDbgはGUIプログラムであっても、それがほとんどのようなコマンドラインデバッガ(と頻繁に)例kd、cdbのとのNTSDとして使用され、同じデバッグエンジンとコマンド。 それは超強力で拡張性、特にシステムに適してドライバや他のオペレーティングシステムのコンポーネントのように/低レベルのデバッグです。 これは、ハードウェアの十分な知識を必要とする、オペレーティングシステムは、コンパイラツールを最大限に得るために。 これは素晴らしい(または完全な、言う必要があります私はだ :-) ネイティブのデバッグは、その広範な拡張コマンドやグラフィックユーザーインターフェイスでください。 管理のデバッグのサポートはSOSの拡張子をデバッグでは、ほぼネイティブのデバッグほど良くはありません。しかし、できることに大きな価値は、マネージおよびネイティブの境界を越えデバッグ統合行うには、され、Silverlightの、それは私が知っています唯一のツールですそれはとSOSを読み込むことができます統合デバッグを行う。

コマンド

WinDbgを/ cdbは/ /昔からされている例kdのNTSD、彼らは非常によく記載されてそう。 これは上だWindowsのお勧めそのデバッグツールについて読んであなたがmicrosoft.comのMSDN ここで私は、あなたとクイックリファレンスを感じる与えるために、そのコマンドの概要を説明する。 すべてのコマンドは、実行時の助けを借りて(介して来る?|を。|ヘルプ![<cmd>は、後述ヘルプ])、概要は、通常、取得するのに十分ですので、始めた。

WinDbgはコマンドの3つのセットがあります:

標準コマンド

主:

  • Bは* /オフ/ / /アドレスまたはアクセスを無効にブレークポイントを有効にするリストを設定するコマンド
  • Dは*(スタック/ヒープ/グローバル変数とパラメータをローカル)、電子*コマンドメモリを変更するとS *メモリを検索するためのメモリを調べるためのコマンド
  • Kは*コールスタックを確認するコマンド
  • Pは、Tは、実行制御のためのG *コマンド

以下の? コマンドの出力は、人々/ cdbで/のNTSD / KdはWinDBGを使用するのに最適の概要と頻繁に参照さ:

0:006>?

デバッガのドキュメントの完全なオープンdebugger.chmの

Bの[℃|開発|メール] [<bps>] -のクリア(/ /無効を有効にブレークポイントを)
のBL -リストポイント
学士<access>に<サイズ> <addr> -セットプロセッサのブレークポイント
BPは<address>は-ブレークポイントを設定ソフト
開発[タイプ] [<範囲>] -ダンプメモリ
DTは[- nは| y]は[[はmod!]名] [[- n個の|のy]フィールド]
[アドレス] [- lリスト] [[] |℃|私|オ| rの[#] |五] -ダンプ使用して型情報
のDV [<名前>] -ダンプのローカル変数
メール[タイプ]で<address> [<values>は]は-の値を入力してくださいメモリ
Gの[のH |のN]と[は、= <アドレス> [<アドレス> ...]]を-に行く
のK <カウント-スタックトレース
京都<カウント-引数ソーススタックトレースで
のLM [kは|リットル| uは|五] -リストモジュール
LNの<expr> -シンボル最寄りのリスト
Pの[= <addr>] [<値>]を-ステップオーバー
Qは-終了
研究[<reg>の[= <expr>]] -ビューまたはセットレジスタ
のS [<opts>] <範囲> <values>は-検索メモリ
SXシリーズ[(電子| dは|私| n)は[- c"をCmd1"] [- c2の"Cmd2"] [- h]オプション(例外|イベント| *)] -イベントフィルタ
Tの[は、= <アドレス>] [<expr>]を-にトレース
のU [<範囲>]が-逆アセンブル
バージョン-ショーデバッグおよびデバッガのバージョン
Xの[の<* |モジュール>!]<*|シンボル> -ビューのシンボル
<expr> -ディスプレイ式
?? <expr> -表示C + +の式
$は、<ファイル名> -コマンドファイルから取るの入力を

Enterキーを押し...

<expr>単項オプス:+ -しないことをめざしdwo qwoポイ低こんにちは
バイナリオプス:+ - * /モジュール(%)と(&)排他的論理和(^)または(|)
比較:==(=)<>!=
オペランド:<reg>、番号の現在の基数、パブリックシンボル
<type>の:b(バイト)、ワット(ワード)、dは[s]と(シンボル]をダブルワード[)、
(アスキー)は、C(DWORD値とチャー)は、u(ユニコード)、リットル(リスト)
f()のfloat型、Dは(ダブル)、)です| Sは(アスキー/ unicode文字列
qは(クワッドワード)
<pattern>:[(塩基| <dll-name>)!] <var-name>は(<var-name>含めることができます?と*)
<範囲>:<アドレス> <アドレス>
:<アドレス> Lの<カウント

ユーザーモードのオプション:
〜 -一覧のスレッドの状態
〜#は掲載-セットのデフォルトのスレッドを
| -リストのプロセスの状態
|#は掲載-セットのデフォルトのプロセスを

x86のオプション:
総局<selector> -ダンプセレクタ
<reg>:[e]の斧、[e]のBXは、[e]のCXは、[e]のdxの、[e]の浦、[e]のディ、[e]の塩基、[e]のSPの、[e]のIPアドレス、[電子]のフロリダ州、
アル、ああ、BLとバーレーン、のcl、チャンネル、dlと、dhを、csの、dsはと、es、fsの、GSのは、SS
DR0上、スピンコート、DR2上、シンボリックリンク、dr6、dr7
fpcw、fpsw、fptw、st0 - ST7は、mm0 - mm7
xmm0 - xmm7
<flag>:ioplのは、dfは、CFの場合は、タスクフォースは、フィート、ZF社は、af、pfの、
<addr>#:<16ビットプロテクトモードの[のセグメント:]アドレス>、
&<V86-modeの[seg:]address>

デバッガのドキュメントの完全なオープンdebugger.chmの

メタコマンド

、高度なデバッグ主にドットが付いているスタート。 いくつかの重要なコマンドでは、知っておくべきこと:

  • 。symfixと。サーバーシンボルを使用するためのsympathは
  • 。srcfixと。ソースサーバー使用してsrcpath
  • 拡張機能をデバッグ管理するための負荷、。loadby。、アンロードします。鎖。はsetdll
  • 。サーバー。リモートリモートデバッグのために

それもあなたの時間をかける価値のシンボルサーバーは、ソースサーバーandリモートデバッグと慣れるtoです:彼らはあなたのlifeたくさんmore easierようwill。 以下の出力です。コマンドが役立つ:

0:006>。ヘルプ
コマンド:
。は、プロセスを放棄現在-放棄
。allow_exec_cmdsコマンドを[0 | 1] -コントロールの実行
。コントロールallow_image_mapping [0 | 1] -オンデマンド画像ファイルのマッピング
。apply_dbp [<オプション>] -データのブレークポイントの状態を、現在の追加
コンテキストを登録
。アセンブラ[<オプション>]が-オプションを設定分解
。アセンブラ[<オプション>] -クリア分解オプション
<proc>添付-実行横に<proc>添付する
<commands>) -ブラケットセットをネストされた実行するためのコマンド(。ブロック
。bpsync [] -特別なブレークポイントの動作のためのマルチスレッドdebuggees 1 0 |
。破る-ループブレークを囲むのうち
-休憩に川崎病侵入。
。キャッシュ[<オプション>] -仮想メモリのキャッシュ制御
。呼び出し<fn>(<arg1>、<arg2>、...) -デバッグの関数を実行する
。コマンドキャッチ(<commands>)が失敗をキャッチ-
。鎖-リストの現在の拡張機能
。オフchilddbg <0 | 1>を-ターン子またはプロセスのデバッグに
。クライアント-リスト、現在アクティブなクライアント
。は、CloseHandleを[<オプション>] [<handle>] -終了処理指定
。は、外側のループを継続-継続
。copysym [<オプション>] <パス> -コピーするディレクトリのファイル現在のシンボル
。は行>を作成<command -プロセスを作成する新しい
。createdir [<オプション>] [<パス>] -コントロールプロセスの作成オプション
。は<アドレス>゙は-ダンプコンテキストレコードをアドレスで指定された
kは*を与える後は、この゙はスタック
。dbgdbg -デバッガ現在にアタッチデバッガ
。debug_sw_wow [、0 | 1] -エミュレーションとの相互作用を許可するソフトウェアワウ
現在のプロセス/ダンプします。デタッチ-デタッチから
。dml_file <ファイル> -コンテンツからファイルのDML出力
フローを示します。dml_flow <スタート> <addr>は、コード-を示す基本ブロック
[<オプション>]航行-概要のデバッガdml_start。活動
)ゼロ(<cond>は) -実行<commands>するまでは<cond>は<commands>はは(しない
。ドライバー-このコマンドは削除されました-使用'lmを'または。リロード- l)の
。ダンプ[<オプション>] <ファイル名>は、 -システム上のホストファイルを作成するダンプ
。dvalloc [<オプション>] <bytes> -デバッグでVirtualAllocのメモリ
。はdvfree [<オプション>] <offset> <bytes> - VirtualFreeデバッグメモリ
。は[エコー"<文字列>"]は表示| <文字列> -文字列をエコー
。echotime -出力デバッガ時間
。echotimestampsのイベント[0 | 1] -トグルタイムスタンプの出力
。コンテキストレコードの現在の例外ダンプecxr -
。effmach [<コンピュータ] -変更現在のマシンタイプ
。他(<commands>) -場合は、/を/他の条件付きの実行
。ELSIFは(<cond>)(<commands>)[<else clauses>] -条件場合は、/を/他
実行
。enable_long_statusは、基本1] -ダンプロングタイプのデフォルト| 0 [
とUnicode文字列。enable_unicode [0 | 1] -ダンプUSHORTに配列/ポインタ
。endsrv <id>は-を無効に指定されたエンジンのサーバー
。endpsrv -終了が現在のセッションのリモートサーバーを
。enumtag -列挙できるタグ付きデータ
。event_code -ディスプレイキャッシュのイベントの説明
表示ログの最近の出来事- 。イベントログ
。イベント-ディスプレイを選択して使用可能なイベント
。eventstr -ディスプレイすべてのイベントの文字列をデバッガに登録
- <dir>は[。exepath [;...]]のパスを設定する実行可能ファイルの検索
- <dir>は[。exepath検索する[;...]]パスを追加する実行可能ファイルの検索
。exprは-制御式の評価
。exptr <address>に-です。のEXRと。EXCEPTION_POINTERSの゙は
。は<アドレスのEXR -ダンプ例外レコードをアドレスで指定された
。extmatch [<opts>] <pattern>は-パターンを表示一致するすべての拡張機能を
。[;...]]を<dir>はextpath <opts> [ -セット拡張子の検索パスを
。[;...]]を<dir>はextpath検索する<opts> [ - ]のパスを追加する拡張検索
。fは+ -セット現在のフレームの現在の呼び出しスタックフレームを
。fは-セットは現在のフレームの呼び出し先には、フレームを現在のスタック
。繊維で<address> -繊維コンテキストセットのアドレスで
リセットコンテキストを指定した場合はアドレスは
。は<pattern> fiximports -しようと画像のインポートをリンクする
。fnent <address>に-指定されたコードのアドレスダンプ関数のエントリ
。fnret <fnaddr> [<retval>] -表示フォーマットの戻り値
。ため(<init>は、<cond>; <step>)(<commands>)は-と実行<commands>を
<step>まで<cond>は
0
。force_radix_output [は1] -ダンプ整数型のデフォルト| 0基本
[<オプション>]は、 - forceを保留中のシステムが初期化可能な場合force_system_init。
。はforce_tb -強制的にトレースを許可支店
の<ecmds>を-実行します。foreachの[optsを]は、(<alias>はは(<tcmds>が)))<ecmds>は(
各トークン
<tcmds>の出力
。よりFPO <オプション> -制御オーバーライドよりFPO情報
枠[<frame>]が-地元のセットのスタックフレームを現在の
。形式の<expr> -多くの形式の結果が表示されます式
]を<オプション>。役立つ[ - helpを表示するこの
。holdmem <オプション> [範囲] -保持し、比較メモリデータ
しますif(<cond>)(<commands>)[<else clauses>] -条件場合は、/を/他
実行
。ignore_missing_pagesが見つからない| [1] -制御カーネルの概要ダンプ0 [
ページのエラーメッセージ
。imgscan <オプション> -画像PEのスキャンメモリを
。jdinfo <jdi_addr>は-情報をNTのAeDebug解釈
。kframesの<カウントは-セットのデフォルトの深さのスタックトレース
。を殺す-プロセスを殺す電流
。lastevent -最後に発生したイベントを表示
。残して-終了囲む。キャッチ
。ライン-トグルラインシンボルの読み込み
。負荷<name>は-チェーンに追加この拡張拡張子をDLLに
。loadby <名前> <mod>は-の拡張DLLを追加するモジュール
チェーンの拡張ディレクトリに
。ケール[<locale>] -ロケールを設定電流
。ログファイル-表示ログの状態
。logopen [<ファイル>] -開いている、新しいログファイル
。logappend [<ファイル>]が-ログファイルに追加
。logclose -近くのログファイル
。netsymsを許可0 | 1]に- [/パスを禁止ネットシンボル
。netuse [<オプション>]が-接続を管理するネット
。noshellの-無効にするシェルコマンド
。noversion -無効にする拡張機能のバージョンチェック
フィルタデバッグ出力に対して指定されたパターン- 。ofilterの<pattern>
。ocommand <prefix>は-コマンドとして指定されたプレフィックスを持つ治療出力を
。opendump <ファイル> -ファイルを開くダンプ
。は、ここで<mask> outmask -セットビットをマスクで現在の出力
クリアビット電流出力マスク- 。outmask -ここで<mask>
。コマンドpcmd [<オプション>]が-コントロールごとにプロンプト
。ポップス[<オプション>] -ポップの状態
。prefer_dml [0 | 1] -コントロールのDMLモードのデフォルト
。printfの"<format>の"<args…> -書式付き出力
プロセスは[<アドレス>] -プロセスを設定する暗黙的な
リセットのデフォルトを指定した場合はアドレスは
。prompt_allow [<オプション>] -表示コントロール何できる情報
プロンプトで
。は]を押して[<オプション> -プッシュ状態を
。quit_lock [<オプション>] -予期しない終了に対するロックセッション
ファイルreadmem <ファイル> <範囲>は、メモリから生-読む
。record_branchesは分岐[0 | 1]を記録コントロール-プロセッサ
。リロード[<image.ext> [= <アドレス>、<サイズ>]] -リロードのシンボル
。再起動-要求セッションを再起動
。リモート<pipename> -スタートにRemote.exeサーバー
。セキュア[0 | 1] -却下操作ホスト危険な状態に
サーバsend_file <options>はリモートのファイル-送信
。サーバー<オプション> -スタートエンジンサーバー
。サーバー-一覧のアクティブなサーバーをリモート
。setdll <名前> -デバッガの拡張機能を検索しますこのDLLは最初の
。シェル[<command>は]が-コマンドを実行するシェル
。] <opts> show_read_failures [ -コントロール余分な読み取りエラー出力
。] <opts> show_sym_failures [ -制御余分なシンボルエラー出力
。は<milliseconds>睡眠-デバッガを期間指定眠るために
ているマシンすることができますへのアクセスを便利に
上で壊れてのNTSD - dを
。srcfix [<path extra>] -修正ソースの検索パス
] extra> [を<path +。srcfix -パスを追加固定ソースの検索
。srcnoisy [0 | 1] -制御冗長ソース読み込んで出力
。はsrcpath [;...]]を[<dir>は-セットのソース検索パスを
。[;...]]を<dir>はsrcpath検索する[ - ]のパスを追加するソースの検索
。はstep_filter [<opts>] ["[は<pattern>; <pattern> ...]"] -セットのシンボルパターン
ステップ時に進んでください
。]をsymfix [<localsym> -修正シンボル検索パスを
。symfix + [<localsym>]は-のパスを追加固定シンボル検索
。symopt <flags> -セットのシンボルオプション
。は<flags>をsymopt + -セットのシンボルのオプションを
。symopt - <flags> -クリアシンボルオプション
。はsympathは[;...]]を[<dir>は-セットのシンボル検索パスを
。[;...]]を<dir>はsympathは検索する[ - ]のパスを追加シンボルの検索
。スレッド[<アドレス>] -のスレッドコンテキストセットのアドレスで
リセットのデフォルトのコンテキストを指定した場合はアドレスは
、時間-が表示されますがセッションの時間情報を
。ttime -が表示されますスレッドの時間情報を
。tlistの-のリストのプロセスを実行している
。typeopt <flags> -セット/クリアタイプのオプション
<名前>アンロードします。 - DLLのリストの拡張DLLから拡張を削除この
。unloadall - DLLのリストの拡張拡張DLLをすべて削除から
。ウェイクアップ-モーニングデバッガを開く。sleep'ing
。0) -実行<commands>をしながら<cond>は-非<commands>しばらくの間((<cond>)
ファイルwritemem <ファイル> <範囲>は、メモリを生-書き込む

使用して"hhは<command>は"またはデバッガディレクトリオープンdebugger.chmで取得する
コマンドの詳細なドキュメント。

拡張コマンド

が付いているスタート!、特定の領域に通常は、マネージデバッグ用のSOSの拡張コマンドのように。 あなたが使用することができます!<ext>を拡張子のコマンドリストに、のように助けて!exts.helpします。 先進的なシステムのデバッグのためのような、非常にこれらの拡張モジュールのコマンドを使用し精通している必要がありますメモリリークを、デッドロックなど、検出する。

エスオーエス

概要

SOSは息子ストライクの頭字語(私を要求しない理由)、マネージデバッグ用のデバッグ拡張。 私はそれは、CLRデバッグのためのCLRチームなので、昔からされている発明された、と信じても、ウェブ上で有益な情報がたくさんあります。 いくつかの推奨される測定値:

CLRの各バージョンは、独自のSOSを(。NET Framework 3.5のが、それでもCLRは2.0を使用し、Silverlightが独自のCLRがある):

ディレクトリCの:\プログラムファイル\デバッグツールclr10のWindows \
2007年9月19日7時01時948784 sos.dll
1ファイル(秒)948784バイト

ディレクトリのC:\プログラム2.0.31005.0ファイル\ Microsoft Silverlightの\を
2008年10月5日午前2時16分午前495424 sos.dll
1ファイル(秒)495424バイト

ディレクトリCの:\ Windowsの\ Microsoft.NET \ Frameworkの\ v1.1.4322を
2004年7月15日12時35はSOS.dllを済み319488
1ファイル(秒)319488バイト

ディレクトリCの:\ Windowsの\ Microsoft.NET \ Frameworkの\ v2.0.50727の
2008年7月27日10時03分にはSOS.dllを済み392184
1ファイル(秒)392184バイト


コマンド

SOSは時のヘルプを実行するようにはほとんど必要がない大きな任意のドキュメント、他のいくつかのTRYとエラーが発生し、いくつかの不満以外の :-)

0:016>!ヘルプ
---------------------------
SOSは管理されてデバッガ拡張のデバッグのため支援設計のDLL
プログラム。 関数は、の順序記載されて、カテゴリー大体し、
重要。 人気のある機能のショートカット名は、括弧内に表示されます。
タイプ"は!関数が役立つの詳細情報は<FunctionName>が"を。

オブジェクト検査試験のコードとスタック
---------- ----------
DumpObjは(スレッドを行う)
DumpArray(ダ)CLRStack
DumpStackObjects(DSO)のIP2MD
DumpHeapのU
DumpVC DumpStack
GCRoot EEStack
ObjSize GCInfo
FinalizeQueue EHInfo
PrintException(PE)はCOMState
TraverseHeap BPMD

審査のCLRデータ構造診断ユーティリティ
---------- ----------
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 DumpLog
DumpSig VMMap
RCWCleanupList vmstatの
DumpIL MinidumpMode
AnalyzeOOM(青)

その他の検査のGCの歴史を
---------- ----------
HistInitよくあるご質問
HistStats
HistRoot
HistObj
HistObjFind
HistClear

サンプルデバッグデモ

私は(ポスト単純なSilverlightアプリケーションを以前のと同じされます使用してSilverlightのデバッグStudioをビジュアル)SOSのでWinDbgをデバッグを示すために:

image_thumb

ここに私の注釈(とデバッグログを始めて/ /):

/ /サーバーをシンボルを使用してパスをシンボルに設定
0:013>で。sympath
シンボル検索パスは:<空>
0:013>はCをsymfix:\ Users \ユーザーningz \ AppData \ローカル\ Tempに\記号を
0:013>で。sympath
シンボル検索パスは:SRVレコード*はC:\ユーザー\ ningz \ AppData \ローカル\ Tempに\記号\ * \シンボル\記号

/ /デバッグアプリケーションれてパスを追加pdbファイルのための
0:013>はC"をsympathは検索する:\ユーザー\ 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フォルダ\ Bin \

/ /シンボルを読み込み、すべての
0:013>。リロード
モジュールをリロードする、現在の
.................................................. .................................................. ..............

/ /サーバーのソースを使用するパスのソースをセットアップする
0:013>。srcpath
ソースの検索パスは:<空>
0:013>。srcfix
ソースの検索パスは:SRVレコード*
0:013>はC"をsrcpath検索する:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクト"SilverlightApplication1 \をSilverlightApplication1 \
ソースの検索パスは:SRVは*;はC:\ユーザー\ ningz \ドキュメント\ Visual Studio 2008 \プロジェクトは、\ SilverlightApplication1 \ SilverlightApplication1

/ /負荷SOSを。 ご注意:
/ / 1。 それは、Silverlightのcoreclrに置き換えられますmscorwksようだ
/ / 2。 の代わりに。loadbyは、使用することもできます。負荷"C:\プログラムファイル\ Microsoft Silverlightの\を2.0.31005.0 \のsos.dllを"
0:013>。loadby SOSはcoreclr
読み込みはc:\プログラムファイル\ Microsoft Silverlightの\ 2.0.31005.0 \ sosを拡張DLL

/ /ハンドラをクリックしてイベントボタンを設定したブレークポイントのために
0:013>は!SilverlightApplication1.Page.Button_Clickをbpmd SilverlightApplication1
1個のメソッドを...
MethodDesc = 03983a30
ブレークポイントを追加保留中...
0:013>のBL
0電子0428215b 0001(0001)0 :****
0:013> gの
ModLoad:70800000 7080c000はC:Windowssystem32dwmapi.dll

ボタンをクリックし、休憩をにwindbgの/ /
ブレークポイントは、0ヒット
***警告は:ことができないSilverlightApplication1.dllのチェックサムを確認する
SilverlightApplication1!Button_Clickを:
04850398 55プッシュebpに
統合は、変数のローカルの列挙をサポートしていない管理のデバッグ。
参照してくださいhttp://dbg/managed.htmを詳細については、詳細。
管理フレーム処理が0x80004005に失敗は、HRESULT

/ /比較!スレッドと〜*の出力を
0:005>!スレッドは/ /リストはスレッドを管理のみ
スレッドカウント:3
UnstartedThread:0
BackgroundThread:3
PendingThread:0
DeadThread:0
ホストの上映時間:はい
先制のGC Allocロック
IDは、例外状態のGCコンテキストのドメイン数をAPT OSID ThreadOBJ
5 1 1b08 043576e0 220バリアフリー04f9f214:04f9ffe8 06f529d8 0のSTA
9 2 928 043689c8臓有効00000000:00000000 0433c738 0のMTA(ファイナライザ)
10は3 1e8c 06f509d0 1220 Uknを有効00000000:00000000 0433c738 0
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イド: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イド:162c.1e8cサスペンド:1 TEBの:7ffd3000凍
開始:coreclr!スレッド::intermediateThreadProc(63fb8e4f)
優先度:0優先クラス:32アフィニティ:3
11イド: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はId:162c.1d18サスペンド:1 TEBのを:7ffdb000凍
開始:なります。NTDLL!RtlUserThreadStart(778c9a78)
優先度:0優先クラス:32アフィニティ:3
管理フレーム処理が0x80004005に失敗は、HRESULT
統合は、変数のローカルの列挙をサポートしていない管理のデバッグ。
参照してください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
電子(0x0450f854)= 0x04f9f1f0

0450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick()
パラメータ:
この(0x0450f864)= 0x04f5b948

0450f870 048cdd10 System.Windows.Controls.Button.OnClick()
パラメータ:
この= <noデータ>

0450f880 048cdc3d System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)
パラメータ:
この(0x0450f884)= 0x04f5b948
電子(0x0450f880)= 0x04f9f188

0450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp(System.Windows.Controls.Control、System.EventArgs)
パラメータ:
Ctrlを押しながら=は<noデータ>
電子=は<noデータ>

0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent(IntPtrの、IntPtrの、Int32の、System.String)の
パラメータ:
unmanagedObj(0x0450f8f8)= 0x04355c48
unmanagedObjArgs(0x0450f8f4)= 0x0707be00
argsTypeIndex(0x0450f928)= 0x000000a9
0x04f9f16c eventName(0x0450f924)=

0450fa74 63ef17b0 [GCFrame:0450fa74]
0450fb30 63ef17b0 [ContextTransitionFrame:0450fb30]
0450fc28 63ef17b0 [UMThkCallFrame:0450fc28]
0:005>楕円曲線/ /リストのすべてのスタックフレーム
ChildEBP RetAddr
0450f868はSilverlightApplication1を048cde0d!Button_Clickをを(<HRESULT 0x80004001>)
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
管理フレーム処理が0x80004005に失敗は、HRESULT
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>は!dumpheap型SilverlightApplication1
アドレスMTのサイズ
36 04f4f31c 046336b0
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ニュートラル=ヌル
フィールド:
MTのフィールドは名前をオフセットタイプのVTのAttr値
047d97a0 40000dc 4 ... al.NativeResource 0インスタンス04f5a5c0 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0のインスタンス00000000 _valueTable
047d9874 40000e0℃... reTypeEventHelper 0インスタンス04f5a600 _coreTypeEventHelper
04856388は40000e3 10 ... bject、mscorlib]は_treeChildren] 0のインスタンスを04f79a58
047ae03c 40000e4 14 ... rnal.IManagedPeer 0インスタンス00000000 _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℃... flection.Assembly 0 _executingAssembly静的共有
>>ドメイン:値0433c738:NotInit 06f529d8:00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0インスタンス00000000 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のインスタンス00000000 BindingValidationError
04856ae4 400010a 20 ... angedEventHandler 0インスタンス00000000 DPChanged
048bc8a4 400010b 24 ... angedEventHandler 0インスタンス00000000 DataContextChanged
03d50f28 400010c 2cのSystem.Boolean 1インスタンス0 _isDataContextBound
_sizeChanged 0481f43c 400010d 28 ... angedEventHandlerは0のインスタンス00000000
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共有静的
>>ドメイン:値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

// two lines above is the button object of the page object
// remember its address 04f5b948 , since we will refer to it later
// we can get the same address for the button object via dumpheap command:
0:005> !dumpheap -mt 04852a10
Address       MT     Size
04f5b948 04852a10       92
total 1 objects
Statistics:
MT    Count    TotalSize Class Name
04852a10        1           92 System.Windows.Controls.Button
Total 1 objects
0:005> !gcwhere 04f5b948 // button is in gen0, since there is no GC yet
Address            Gen   Heap   segment            begin              allocated           size
04f5b948   0      0     04f40000   04f41000   04f9fff4    0x5c(92)
0:005> !gcroot 04f5b948  // see who's holding reference to the button object
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
more info.
// registry references
ecx:Root:  04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
edx:Root:  04f5b948(System.Windows.Controls.Button)->
// stack references
Scan Thread 5 OSTHread 1b08
ESP:450f860:Root:  04f5ca18(System.Windows.RoutedEventHandler)->
04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
ESP:450f864:Root:  04f5b948(System.Windows.Controls.Button)->
ESP:450f874:Root:  04f5b948(System.Windows.Controls.Button)->
ESP:450f884:Root:  04f5b948(System.Windows.Controls.Button)->
ESP:450f894:Root:  04f5b948(System.Windows.Controls.Button)->
ESP:450f8d4:Root:  04f5b948(System.Windows.Controls.Button)->
ESP:450f8e4:Root:  04f5b948(System.Windows.Controls.Button)->
Scan Thread 9 OSTHread 928
Scan Thread 10 OSTHread 1e8c
// domain references
DOMAIN(06F529D8):HANDLE(Pinned):46412f8:Root:  05f44260(System.Object[])->
04f45234(System.Collections.Generic.List`1[[System.Object, mscorlib]])->
04f59980(System.Object[])->
04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
Managed frame processing failed, HRESULT 0x80004005
Integrated managed debugging does not support enumeration of local variables.
See http://dbg/managed.htm for more details.

/ /ボタンを調べる自体がオブジェクト
0:005>は!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 _invocationCount

0: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. ありがとう!

Technorati Tags: , , , ,

共有し、楽しみなさい:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签
Categories: Debug , Silverlight Tags: , , ,
  1. コメントはまだありません。
  1. いいえトラックバックはまだありません。