SilverlightのデバッグWinDbgとSOSをと
導入
ポストでは、以前のSilverlightのスタジオのVisualデバッグと 、私はアプリケーションを実証は、Visual管理Studioには、最も強力なデバッグ用の便利なツールです。 しかし、一部の高度なデバッグのシナリオで、/スレッドは、カーネルのデバッグメモリリーク、デッドロック、暴走プロセスのように、/ UIが等、デバッグ(または、のNTSD cdbをWinDbgを、Kd)が通常好まれる場合は、だけでなく、オプションでリモート/クラッシュを進んだ。
Windows用デバッグツール
概要
WinDbgはの一部であるWindowsのツールのデバッグパッケージ :
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チームなので、昔からされている発明された、と信じても、ウェブ上で有益な情報がたくさんあります。 いくつかの推奨される測定値:
- SOSのデバッグ拡張 MSDNの
- ジェイソンザンダーのブログ記事: SOSの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をデバッグを示すために:
ここに私の注釈(とデバッグログを始めて/ /):
/ /サーバーをシンボルを使用してパスをシンボルに設定
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)= 0x04f9f1f00450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick()
パラメータ:
この(0x0450f864)= 0x04f5b9480450f870 048cdd10 System.Windows.Controls.Button.OnClick()
パラメータ:
この= <noデータ>0450f880 048cdc3d System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)
パラメータ:
この(0x0450f884)= 0x04f5b948
電子(0x0450f880)= 0x04f9f1880450f890 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 _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. ありがとう!








最近のコメント