<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ning Zhang&#039;s Blog &#187; Debug</title>
	<atom:link href="http://www.ningzhang.org/category/debug/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ningzhang.org</link>
	<description>About Silverlight, Microsoft technologies, and software development in general.</description>
	<lastBuildDate>Thu, 14 Apr 2011 22:47:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Silverlight Debugging with WinDbg and SOS</title>
		<link>http://www.ningzhang.org/2008/12/19/silverlight-debugging-with-windbg-and-sos/</link>
		<comments>http://www.ningzhang.org/2008/12/19/silverlight-debugging-with-windbg-and-sos/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 03:52:00 +0000</pubDate>
		<dc:creator>Ning Zhang</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SOS]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[WinDBG]]></category>

		<guid isPermaLink="false">http://nztst.wordpress.com/2008/12/19/silverlight-debugging-with-windbg-and-sos/</guid>
		<description><![CDATA[Introduction In previous post Silverlight Debugging With Visual Studio, I demonstrated that Visual Studio is a powerful and the most convenient tool for debugging managed applications. But for some advanced debugging scenarios, like memory leak, deadlock, runaway process/thread, kernel debugging, and advanced remote/crash/UI debugging etc, WinDbg (or cdb, ntsd, kd) is usually preferred, if not [...]]]></description>
			<content:encoded><![CDATA[<h4>Introduction</h4>
<p>In previous post <a href="http://blog.ningzhang.org/2008/12/silverlight-debugging-with-visual.html">Silverlight Debugging With Visual Studio</a>, I demonstrated that Visual Studio is a powerful and the most convenient tool for debugging managed applications. But for some advanced debugging scenarios, like memory leak, deadlock, runaway process/thread, kernel debugging, and advanced remote/crash/UI debugging etc, WinDbg (or cdb, ntsd, kd) is usually preferred, if not the only option.</p>
<h4>Debugging Tools for Windows</h4>
<h5>Overview</h5>
<p><a href="http://en.wikipedia.org/wiki/WinDbg">WinDbg</a> is part of the <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">Debugging Tools for Windows</a> package:</p>
<h4><a href="http://www.ningzhang.org/wp-content/uploads/2009/01/image-thumb5.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image_thumb5" src="http://www.ningzhang.org/wp-content/uploads/2009/01/image-thumb5-thumb.png" width="643" height="484" /></a></h4>
<p>Even though WinDbg is a GUI program, it is mostly used as a command line debugger like (and often with) kd, cdb and ntsd, and share the same debug engine and commands. It is super powerful and extensible, particularly well suited for system/low-level debugging like drivers and other operating system components. It does require good knowledge of hardware, operating system, and compiler to get the most out of the toolset. It&#8217;s a great(or perfect, should I say <img src='http://www.ningzhang.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  for native debugging, with its extensive and extensible commands and graphic user interface. Managed debugging support is via SOS debug extension, isn&#8217;t nearly as good as native debugging, but there is tremendous value in being able to do integrated debugging across managed and native boundary, and for Silverlight, it is the only tool I am aware of that can load SOS and do integrated debugging.</p>
<h5>Commands</h5>
<p>WinDbg/cdb/ntsd/kd have been around for a long time, so they are very well documented. It&#8217;s highly recommended that you read about Debugging Tools for Windows on <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx">microsoft.com</a> and <a href="http://msdn.microsoft.com/en-us/library/cc267445.aspx">msdn</a>. Here I only give a brief overview of its commands, to give you a feel and quick reference. All commands come with run time help (via ?|.help|!help [&lt;cmd&gt;] as discussed below), so an overview is usually enough to get your started.</p>
<p>WinDbg has three sets of commands:</p>
<h6>Standard Commands</h6>
<p>Mainly:</p>
<ul>
<li>B* commands to set/clear/list/enable/disable breakpoints on address or access </li>
<li>D* commands to examine memory(stack/heap, local/global variables and parameters), E* command to modify memory, and S* to search memory </li>
<li>K* commands to examine call stack </li>
<li>P, T, G* commands for execution control </li>
</ul>
<blockquote><p>below ? command output is an great overview and frequent reference for people using windbg/cdb/ntsd/kd:</p>
</blockquote>
<blockquote><p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">0:006&gt; ? </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">Open debugger.chm for complete debugger documentation </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">B[C|D|E][&lt;bps&gt;] &#8211; clear/disable/enable breakpoint(s)        <br />BL &#8211; list breakpoints         <br />BA &lt;access&gt; &lt;size&gt; &lt;addr&gt; &#8211; set processor breakpoint         <br />BP &lt;address&gt; &#8211; set soft breakpoint         <br />D[type][&lt;range&gt;] &#8211; dump memory         <br />DT [-n|y] [[mod!]name] [[-n|y]fields]         <br />&#160;&#160; [address] [-l list] [-a[]|c|i|o|r[#]|v] &#8211; dump using type information         <br />DV [&lt;name&gt;] &#8211; dump local variables         <br />E[type] &lt;address&gt; [&lt;values&gt;] &#8211; enter memory values         <br />G[H|N] [=&lt;address&gt; [&lt;address&gt;...]] &#8211; go         <br />K &lt;count&gt; &#8211; stacktrace         <br />KP &lt;count&gt; &#8211; stacktrace with source arguments         <br />LM[k|l|u|v] &#8211; list modules         <br />LN &lt;expr&gt; &#8211; list nearest symbols         <br />P [=&lt;addr&gt;] [&lt;value&gt;] &#8211; step over         <br />Q &#8211; quit         <br />R [[&lt;reg&gt; [= &lt;expr&gt;]]] &#8211; view or set registers         <br />S[&lt;opts&gt;] &lt;range&gt; &lt;values&gt; &#8211; search memory         <br />SX [{e|d|i|n} [-c &quot;Cmd1&quot;] [-c2 &quot;Cmd2&quot;] [-h] {Exception|Event|*}] &#8211; event filter         <br />T [=&lt;address&gt;] [&lt;expr&gt;] &#8211; trace into         <br />U [&lt;range&gt;] &#8211; unassemble         <br />version &#8211; show debuggee and debugger version         <br />X [&lt;*|module&gt;!]&lt;*|symbol&gt; &#8211; view symbols         <br />? &lt;expr&gt; &#8211; display expression         <br />?? &lt;expr&gt; &#8211; display C++ expression         <br />$&lt; &lt;filename&gt; &#8211; take input from a command file </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">Hit Enter&#8230; </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">&lt;expr&gt; unary ops: + &#8211; not by wo dwo qwo poi hi low        <br />&#160;&#160;&#160;&#160;&#160;&#160; binary ops: + &#8211; * / mod(%) and(&amp;) xor(^) or(|)         <br />&#160;&#160;&#160;&#160;&#160;&#160; comparisons: == (=) &lt; &gt; !=         <br />&#160;&#160;&#160;&#160;&#160;&#160; operands: number in current radix, public symbol, &lt;reg&gt;         <br />&lt;type&gt; : b (byte), w (word), d[s] (doubleword [with symbols]),         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; a (ascii), c (dword and Char), u (unicode), l (list)         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; f (float), D (double), s|S (ascii/unicode string)         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; q (quadword)         <br />&lt;pattern&gt; : [(nt | &lt;dll-name&gt;)!]&lt;var-name&gt; (&lt;var-name&gt; can include ? and *)         <br />&lt;range&gt; : &lt;address&gt; &lt;address&gt;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; : &lt;address&gt; L &lt;count&gt; </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">User-mode options:        <br />~ &#8211; list threads status         <br />~#s &#8211; set default thread         <br />| &#8211; list processes status         <br />|#s &#8211; set default process </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">x86 options:        <br />DG &lt;selector&gt; &#8211; dump selector         <br />&lt;reg&gt; : [e]ax, [e]bx, [e]cx, [e]dx, [e]si, [e]di, [e]bp, [e]sp, [e]ip, [e]fl,         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; al, ah, bl, bh, cl, ch, dl, dh, cs, ds, es, fs, gs, ss         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; dr0, dr1, dr2, dr3, dr6, dr7         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; fpcw, fpsw, fptw, st0-st7, mm0-mm7         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmm0-xmm7         <br />&lt;flag&gt; : iopl, of, df, if, tf, sf, zf, af, pf, cf         <br />&lt;addr&gt; : #&lt;16-bit protect-mode [seg:]address&gt;,         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &amp;&lt;V86-mode [seg:]address&gt; </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">Open debugger.chm for complete debugger documentation</span></p>
</blockquote>
<h6>Meta Commands</h6>
<p>Those start with a dot, mostly for advanced debugging. Some important commands you should know:</p>
<ul>
<li>.symfix and .sympath for using symbol server </li>
<li>.srcfix and .srcpath for using source server </li>
<li>.load, .loadby, .unload, .chain, .setdll for managing debug extensions </li>
<li>.server, .remote for remote debugging </li>
</ul>
<p>It is well worth your time to get familiar with symbol server, source server and remote debugging: they will make your life a lot more easier. below is the output of .help command:</p>
<blockquote><p><span style="font-family: &#39;Lucida Console&#39;; font-size: x-small">0:006&gt; .help        <br />. commands:         <br />&#160;&#160; .abandon &#8211; abandon the current process         <br />&#160;&#160; .allow_exec_cmds [0|1] &#8211; control execution commands         <br />&#160;&#160; .allow_image_mapping [0|1] &#8211; control on-demand image file mapping         <br />&#160;&#160; .apply_dbp [&lt;options&gt;] &#8211; add current data breakpoint state to a         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; register context         <br />&#160;&#160; .asm [&lt;options&gt;] &#8211; set disassembly options         <br />&#160;&#160; .asm- [&lt;options&gt;] &#8211; clear disassembly options         <br />&#160;&#160; .attach &lt;proc&gt; &#8211; attach to &lt;proc&gt; at next execution         <br />&#160;&#160; .block { &lt;commands&gt; } &#8211; brackets a set of commands for nested execution         <br />&#160;&#160; .bpsync [0|1] &#8211; special breakpoint behavior for multithreaded debuggees         <br />&#160;&#160; .break &#8211; break out of the enclosing loop         <br />&#160;&#160; .breakin &#8211; break into KD         <br />&#160;&#160; .cache [&lt;options&gt;] &#8211; virtual memory cache control         <br />&#160;&#160; .call &lt;fn&gt;(&lt;arg1&gt;, &lt;arg2&gt;, &#8230;) &#8211; run a function in the debuggee         <br />&#160;&#160; .catch { &lt;commands&gt; } &#8211; catch failures in commands         <br />&#160;&#160; .chain &#8211; list current extensions         <br />&#160;&#160; .childdbg &lt;0|1&gt; &#8211; turn child process debugging on or off         <br />&#160;&#160; .clients &#8211; list currently active clients         <br />&#160;&#160; .closehandle [&lt;options&gt;] [&lt;handle&gt;] &#8211; close the given handle         <br />&#160;&#160; .continue &#8211; continue the enclosing loop         <br />&#160;&#160; .copysym [&lt;options&gt;] &lt;path&gt; &#8211; copy current symbol files to a directory         <br />&#160;&#160; .create &lt;command line&gt; &#8211; create a new process         <br />&#160;&#160; .createdir [&lt;options&gt;] [&lt;path&gt;] &#8211; control process creation options         <br />&#160;&#160; .cxr &lt;address&gt; &#8211; dump context record at specified address         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; k* after this gives cxr stack         <br />&#160;&#160; .dbgdbg &#8211; attach a debugger to the current debugger         <br />&#160;&#160; .debug_sw_wow [0|1] &#8211; allow interaction with software WOW emulation         <br />&#160;&#160; .detach &#8211; detach from the current process/dump         <br />&#160;&#160; .dml_file &lt;file&gt; &#8211; output DML content from file         <br />&#160;&#160; .dml_flow &lt;start&gt; &lt;addr&gt; &#8211; show basic block code flow         <br />&#160;&#160; .dml_start [&lt;options&gt;] &#8211; navigable overview of debugger activities         <br />&#160;&#160; .do { &lt;commands&gt; } (&lt;cond&gt;) &#8211; execute &lt;commands&gt; until &lt;cond&gt; is zero         <br />&#160;&#160; .drivers &#8211; This command was removed &#8212; use &#8216;lm&#8217; or .reload -l)         <br />&#160;&#160; .dump [&lt;options&gt;] &lt;filename&gt; &#8211; create a dump file on the host system         <br />&#160;&#160; .dvalloc [&lt;options&gt;] &lt;bytes&gt; &#8211; VirtualAlloc memory in the debuggee         <br />&#160;&#160; .dvfree [&lt;options&gt;] &lt;offset&gt; &lt;bytes&gt; &#8211; VirtualFree memory in the debuggee         <br />&#160;&#160; .echo [&quot;&lt;string&gt;&quot;|&lt;string&gt;] &#8211; echo string         <br />&#160;&#160; .echotime &#8211; output debugger time         <br />&#160;&#160; .echotimestamps [0|1] &#8211; toggle timestamp output on events         <br />&#160;&#160; .ecxr &#8211; dump context record for current exception         <br />&#160;&#160; .effmach [&lt;machine&gt;] &#8211; change current machine type         <br />&#160;&#160; .else { &lt;commands&gt; } &#8211; if/then/else conditional execution         <br />&#160;&#160; .elsif (&lt;cond&gt;) { &lt;commands&gt; } [&lt;else clauses&gt;] &#8211; if/then/else conditional         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; execution         <br />&#160;&#160; .enable_long_status [0|1] &#8211; dump LONG types in default base         <br />&#160;&#160; .enable_unicode [0|1] &#8211; dump USHORT array/pointers and unicode strings         <br />&#160;&#160; .endsrv &lt;id&gt; &#8211; disable the given engine server         <br />&#160;&#160; .endpsrv &#8211; cause the current session&#8217;s remote server to exit         <br />&#160;&#160; .enumtag &#8211; enumerate available tagged data         <br />&#160;&#160; .event_code &#8211; display cached event instructions         <br />&#160;&#160; .eventlog &#8211; display log of recent events         <br />&#160;&#160; .events &#8211; display and select available events         <br />&#160;&#160; .eventstr &#8211; display any event strings registered by debuggee         <br />&#160;&#160; .exepath [&lt;dir&gt;[;...]] &#8211; set executable search path         <br />&#160;&#160; .exepath+ [&lt;dir&gt;[;...]] &#8211; append executable search path         <br />&#160;&#160; .expr &#8211; control expression evaluator         <br />&#160;&#160; .exptr &lt;address&gt; &#8211; do .exr and .cxr for EXCEPTION_POINTERS         <br />&#160;&#160; .exr &lt;address&gt; &#8211; dump exception record at specified address         <br />&#160;&#160; .extmatch [&lt;opts&gt;] &lt;pattern&gt; &#8211; display all extensions matching pattern         <br />&#160;&#160; .extpath &lt;opts&gt; [&lt;dir&gt;[;...]] &#8211; set extension search path         <br />&#160;&#160; .extpath+ &lt;opts&gt; [&lt;dir&gt;[;...]] &#8211; append extension search path         <br />&#160;&#160; .f+ &#8211; set current stack frame to caller of current frame         <br />&#160;&#160; .f- &#8211; set current stack frame to callee of current frame         <br />&#160;&#160; .fiber &lt;address&gt; &#8211; sets context of fiber at address         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; resets context if no address specified         <br />&#160;&#160; .fiximports &lt;pattern&gt; &#8211; attempts to link imports for images         <br />&#160;&#160; .fnent &lt;address&gt; &#8211; dump function entry for the given code address         <br />&#160;&#160; .fnret &lt;fnaddr&gt; [&lt;retval&gt;] &#8211; display formatted return value         <br />&#160;&#160; .for ( &lt;init&gt; ; &lt;cond&gt; ; &lt;step&gt; ) { &lt;commands&gt; } &#8211; execute &lt;commands&gt; and         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;step&gt; until &lt;cond&gt; is         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; zero         <br />&#160;&#160; .force_radix_output [0|1] &#8211; dump integer types in default base         <br />&#160;&#160; .force_system_init [&lt;options&gt;] &#8211; force pending systems to initialize if possible         <br />&#160;&#160; .force_tb &#8211; forcibly allow branch tracing         <br />&#160;&#160; .foreach [opts] ( &lt;alias&gt; { &lt;tcmds&gt; } ) { &lt;ecmds&gt; } &#8211; execute &lt;ecmds&gt; for         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; each token in the         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; output of &lt;tcmds&gt;         <br />&#160;&#160; .fpo &lt;options&gt; &#8211; control override FPO information         <br />&#160;&#160; .frame [&lt;frame&gt;] &#8211; set current stack frame for locals         <br />&#160;&#160; .formats &lt;expr&gt; &#8211; displays expression result in many formats         <br />&#160;&#160; .help [&lt;options&gt;] &#8211; display this help         <br />&#160;&#160; .holdmem &lt;options&gt; [range] &#8211; hold and compare memory data         <br />&#160;&#160; .if (&lt;cond&gt;) { &lt;commands&gt; } [&lt;else clauses&gt;] &#8211; if/then/else conditional         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; execution         <br />&#160;&#160; .ignore_missing_pages [0|1] &#8211; control kernel summary dump missing         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; page error message         <br />&#160;&#160; .imgscan &lt;options&gt; &#8211; scan memory for PE images         <br />&#160;&#160; .jdinfo &lt;jdi_addr&gt; &#8211; interpret AeDebug information         <br />&#160;&#160; .kframes &lt;count&gt; &#8211; set default stack trace depth         <br />&#160;&#160; .kill &#8211; kill the current process         <br />&#160;&#160; .lastevent &#8211; display the last event that occurred         <br />&#160;&#160; .leave &#8211; exit the enclosing .catch         <br />&#160;&#160; .lines &#8211; toggle line symbol loading         <br />&#160;&#160; .load &lt;name&gt; &#8211; add this extension DLL to the extension chain         <br />&#160;&#160; .loadby &lt;name&gt; &lt;mod&gt; &#8211; add the extension DLL in the module         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; directory to the extension chain         <br />&#160;&#160; .locale [&lt;locale&gt;] &#8211; set the current locale         <br />&#160;&#160; .logfile &#8211; display log status         <br />&#160;&#160; .logopen [&lt;file&gt;] &#8211; open new log file         <br />&#160;&#160; .logappend [&lt;file&gt;] &#8211; append to log file         <br />&#160;&#160; .logclose &#8211; close log file         <br />&#160;&#160; .netsyms [0|1] &#8211; allow/disallow net symbol paths         <br />&#160;&#160; .netuse [&lt;options&gt;] &#8211; manage net connections         <br />&#160;&#160; .noshell &#8211; disable shell commands         <br />&#160;&#160; .noversion &#8211; disable extension version checking         <br />&#160;&#160; .ofilter &lt;pattern&gt; &#8211; filter debuggee output against the given pattern         <br />&#160;&#160; .ocommand &lt;prefix&gt; &#8211; treat output with the given prefix as a command         <br />&#160;&#160; .opendump &lt;file&gt; &#8211; open a dump file         <br />&#160;&#160; .outmask &lt;mask&gt; &#8211; set bits in the current output mask         <br />&#160;&#160; .outmask- &lt;mask&gt; &#8211; clear bits in the current output mask         <br />&#160;&#160; .pcmd [&lt;options&gt;] &#8211; control per-prompt command         <br />&#160;&#160; .pop [&lt;options&gt;] &#8211; pop state         <br />&#160;&#160; .prefer_dml [0|1] &#8211; control DML mode default         <br />&#160;&#160; .printf &quot;&lt;format&gt;&quot;, &lt;args&#8230;&gt; &#8211; formatted output         <br />&#160;&#160; .process [&lt;address&gt;] &#8211; sets implicit process         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; resets default if no address specified         <br />&#160;&#160; .prompt_allow [&lt;options&gt;] &#8211; control what information can be displayed         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; at the prompt         <br />&#160;&#160; .push [&lt;options&gt;] &#8211; push state         <br />&#160;&#160; .quit_lock [&lt;options&gt;] &#8211; locks session against unexpected quit         <br />&#160;&#160; .readmem &lt;file&gt; &lt;range&gt; &#8211; read raw memory from a file         <br />&#160;&#160; .record_branches [0|1] &#8211; controls recording of processor branching         <br />&#160;&#160; .reload [&lt;image.ext&gt;[=&lt;address&gt;,&lt;size&gt;]] &#8211; reload symbols         <br />&#160;&#160; .restart &#8211; request a session restart         <br />&#160;&#160; .remote &lt;pipename&gt; &#8211; start remote.exe server         <br />&#160;&#160; .secure [0|1] &#8211; disallow operations dangerous for the host         <br />&#160;&#160; .send_file &lt;options&gt; &#8211; send files to remote server         <br />&#160;&#160; .server &lt;options&gt; &#8211; start engine server         <br />&#160;&#160; .servers &#8211; list active remoting servers         <br />&#160;&#160; .setdll &lt;name&gt; &#8211; debugger will search for extensions in this DLL first         <br />&#160;&#160; .shell [&lt;command&gt;] &#8211; execute shell command         <br />&#160;&#160; .show_read_failures [&lt;opts&gt;] &#8211; control extra read failure output         <br />&#160;&#160; .show_sym_failures [&lt;opts&gt;] &#8211; control extra symbol failure output         <br />&#160;&#160; .sleep &lt;milliseconds&gt; &#8211; debugger sleeps for given duration         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; useful for allowing access to a machine that&#8217;s         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; broken in on an ntsd -d         <br />&#160;&#160; .srcfix [&lt;path extra&gt;] &#8211; fix source search path         <br />&#160;&#160; .srcfix+ [&lt;path extra&gt;] &#8211; append fixed source search path         <br />&#160;&#160; .srcnoisy [0|1] &#8211; control verbose source loading output         <br />&#160;&#160; .srcpath [&lt;dir&gt;[;...]] &#8211; set source search path         <br />&#160;&#160; .srcpath+ [&lt;dir&gt;[;...]] &#8211; append source search path         <br />&#160;&#160; .step_filter [&lt;opts&gt;] [&quot;&lt;pattern&gt;[;&lt;pattern&gt;...]&quot;] &#8211; Set symbol patterns         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; to skip when stepping         <br />&#160;&#160; .symfix [&lt;localsym&gt;] &#8211; fix symbol search path         <br />&#160;&#160; .symfix+ [&lt;localsym&gt;] &#8211; append fixed symbol search path         <br />&#160;&#160; .symopt &lt;flags&gt; &#8211; set symbol options         <br />&#160;&#160; .symopt+ &lt;flags&gt; &#8211; set symbol options         <br />&#160;&#160; .symopt- &lt;flags&gt; &#8211; clear symbol options         <br />&#160;&#160; .sympath [&lt;dir&gt;[;...]] &#8211; set symbol search path         <br />&#160;&#160; .sympath+ [&lt;dir&gt;[;...]] &#8211; append symbol search path         <br />&#160;&#160; .thread [&lt;address&gt;] &#8211; sets context of thread at address         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; resets default context if no address specified         <br />&#160;&#160; .time &#8211; displays session time information         <br />&#160;&#160; .ttime &#8211; displays thread time information         <br />&#160;&#160; .tlist &#8211; list running processes         <br />&#160;&#160; .typeopt &lt;flags&gt; &#8211; set/clear type options         <br />&#160;&#160; .unload &lt;name&gt; &#8211; remove this extension DLL from the list of extension DLLs         <br />&#160;&#160; .unloadall &#8211; remove all extension DLLs from the list of extensions DLLs         <br />&#160;&#160; .wake &#8211; wake up a .sleep&#8217;ing debugger         <br />&#160;&#160; .while (&lt;cond&gt;) { &lt;commands&gt; } &#8211; execute &lt;commands&gt; while &lt;cond&gt; is non-zero         <br />&#160;&#160; .writemem &lt;file&gt; &lt;range&gt; &#8211; write raw memory to a file </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;">Use &quot;.hh &lt;command&gt;&quot; or open debugger.chm in the debuggers directory to get        <br />detailed documentation on a command.</span></p>
</blockquote>
<h6>Extension Commands</h6>
<p>Those start with !, usually for a particular area, like SOS extension commands for managed debugging. You can use !&lt;ext&gt;.help to list commands of an extension, like !exts.help. For advanced system debugging, like detecting memory leak, deadlock etc, you have to be very familiar with those extension commands.</p>
<h4>SOS</h4>
<h5>Overview</h5>
<p>SOS is the acronym for Son of Strike (don&#8217;t ask me why), a debug extension for managed debugging. I believe it was invented by CLR team for CLR debugging, so it has been around for a long time, and there are lots of good information on the web. Some recommended readings:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/bb190764.aspx">SOS Debug Extension</a> on MSDN </li>
<li>Jason Zander&#8217;s blog post: <a href="http://blogs.msdn.com/jasonz/archive/2003/10/21/53581.aspx">SOS Debugging of CLR</a> </li>
</ul>
<p>Each version of CLR has its own SOS (.NET Framework 3.5 still uses CLR 2.0, and Silverlight has its own CLR):</p>
<p>   <blockquote>   <p><span style="font-family: &#39;Lucida Console&#39;">Directory of C:\Program Files\Debugging Tools for Windows\clr10        <br />09/19/2007&#160; 07:01 PM&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 948,784 sos.dll         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 File(s)&#160;&#160;&#160;&#160;&#160;&#160;&#160; 948,784 bytes </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">Directory of C:\Program Files\Microsoft Silverlight\2.0.31005.0        <br />10/05/2008&#160; 02:16 AM&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 495,424 sos.dll         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 File(s)&#160;&#160;&#160;&#160;&#160;&#160;&#160; 495,424 bytes </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">Directory of C:\Windows\Microsoft.NET\Framework\v1.1.4322        <br />07/15/2004&#160; 12:35 AM&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 319,488 SOS.dll         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 File(s)&#160;&#160;&#160;&#160;&#160;&#160;&#160; 319,488 bytes </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">Directory of C:\Windows\Microsoft.NET\Framework\v2.0.50727        <br />07/27/2008&#160; 10:03 AM&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 392,184 SOS.dll         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 File(s)&#160;&#160;&#160;&#160;&#160;&#160;&#160; 392,184 bytes</span></p> </blockquote> <br />
<h5>Commands</h5>
<p>SOS run time help is so great that you almost don&#8217;t need any other doc other than a few try and error and some frustration <img src='http://www.ningzhang.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<blockquote><p><span style="font-family: &#39;Lucida Console&#39;">0:016&gt; !help        <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-         <br />SOS is a debugger extension DLL designed to aid in the debugging of managed         <br />programs. Functions are listed by category, then roughly in order of         <br />importance. Shortcut names for popular functions are listed in parenthesis.         <br />Type &quot;!help &lt;functionname&gt;&quot; for detailed info on that function. </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;">Object Inspection&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Examining code and stacks        <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;         <br />DumpObj (do)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Threads         <br />DumpArray (da)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; CLRStack         <br />DumpStackObjects (dso)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; IP2MD         <br />DumpHeap&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; U         <br />DumpVC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DumpStack         <br />GCRoot&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EEStack         <br />ObjSize&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GCInfo         <br />FinalizeQueue&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; EHInfo         <br />PrintException (pe)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; COMState         <br />TraverseHeap&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; BPMD </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;">Examining CLR data structures&#160;&#160;&#160;&#160;&#160; Diagnostic Utilities        <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;         <br />DumpDomain&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; VerifyHeap         <br />EEHeap&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; VerifyObj         <br />Name2EE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FindRoots         <br />SyncBlk&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HeapStat         <br />DumpMT&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GCWhere         <br />DumpClass&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ListNearObj (lno)         <br />DumpMD&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GCHandles         <br />Token2EE&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; GCHandleLeaks         <br />EEVersion&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FinalizeQueue (fq)         <br />DumpModule&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FindAppDomain         <br />ThreadPool&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; SaveModule         <br />DumpAssembly&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ProcInfo         <br />DumpSigElem&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; StopOnException (soe)         <br />DumpRuntimeTypes&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; DumpLog         <br />DumpSig&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; VMMap         <br />RCWCleanupList&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; VMStat         <br />DumpIL&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MinidumpMode         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; AnalyzeOOM (ao) </span></p>
<p><span style="font-family: &#39;Lucida Console&#39;">Examining the GC history&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Other        <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#160;&#160;&#160;&#160;&#160; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;         <br />HistInit&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; FAQ         <br />HistStats         <br />HistRoot         <br />HistObj         <br />HistObjFind         <br />HistClear</span></p>
</blockquote>
<h4>Sample Debug Demonstration</h4>
<p>I will use the same simplest Silverlight application in previous post (<a href="http://blog.ningzhang.org/2008/12/silverlight-debugging-with-visual.html">Silverlight Debugging With Visual Studio</a>) to demonstrate WinDbg debugging with SOS:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/01/image-thumb.png"><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image_thumb" src="http://www.ningzhang.org/wp-content/uploads/2009/01/image-thumb-thumb.png" width="644" height="477" /></a></p>
<p>Here is the debug log with my annotations (start with //):</p>
<p>   <blockquote>   <p><span style="font-family: &#39;Lucida Console&#39;">// set up symbol path to use symbol server        <br />0:013&gt; .sympath         <br />Symbol search path is: &lt;empty&gt;         <br />0:013&gt; .symfix C:\Users\ningz\AppData\Local\Temp\Symbols         <br />0:013&gt; .sympath         <br />Symbol search path is: SRV*C:\Users\ningz\AppData\Local\Temp\Symbols\*\symbols\symbols </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// add pdb path for the application being debugged        <br />0:013&gt; .sympath+&quot;C:\Users\ningz\Documents\Visual Studio 2008\Projects\SilverlightApplication1\SilverlightApplication1\Bin\Debug&quot;         <br />Symbol search path is: SRV*C:\Users\ningz\AppData\Local\Temp\Symbols*</span>       <br /><span style="font-family: &#39;Lucida Console&#39;">http://msdl.microsoft.com/download/symbols;        <br />C:\Users\ningz\Documents\Visual</span><span style="font-family: &#39;Lucida Console&#39;"> Studio 2008\Projects\SilverlightApplication1\SilverlightApplication1\Bin\Debug</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// reload all symbols        <br />0:013&gt; .reload         <br />Reloading current modules         <br />.................................................................................................................. </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// set up source path to use source server        <br />0:013&gt; .srcpath         <br />Source search path is: &lt;empty&gt;         <br />0:013&gt; .srcfix         <br />Source search path is: SRV*         <br />0:013&gt; .srcpath+&quot;C:\Users\ningz\Documents\Visual Studio 2008\Projects\SilverlightApplication1\SilverlightApplication1&quot;         <br />Source search path is: SRV*;C:\Users\ningz\Documents\Visual Studio 2008\Projects\SilverlightApplication1\SilverlightApplication1</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// load SOS. Please note:        <br />// 1. it seems mscorwks is replaced with coreclr in Silverlight         <br />// 2. instead of .loadby, you can also use .load &quot;C:\Program Files\Microsoft Silverlight\2.0.31005.0\sos.dll&quot;         <br />0:013&gt; .loadby sos coreclr         <br />Loaded c:\Program Files\Microsoft Silverlight\2.0.31005.0\sos extension DLL</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">//set a breakpoint for button click event handler        <br />0:013&gt; !bpmd SilverlightApplication1 SilverlightApplication1.Page.Button_Click         <br />Found 1 methods...         <br />MethodDesc = 03983a30         <br />Adding pending breakpoints...         <br />0:013&gt; bl         <br />0 e 0428215b&#160;&#160;&#160;&#160; 0001 (0001)&#160; 0:****         <br />0:013&gt; g         <br />ModLoad: 70800000 7080c000&#160;&#160; C:Windowssystem32dwmapi.dll</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// click the button and break into windbg        <br />Breakpoint 0 hit         <br />*** WARNING: Unable to verify checksum for SilverlightApplication1.dll         <br />SilverlightApplication1!Button_Click:         <br />04850398 55&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; push&#160;&#160;&#160; ebp         <br />Integrated managed debugging does not support enumeration of local variables.         <br />See </span><a href="http://dbg/managed.htm"><span style="font-family: &#39;Lucida Console&#39;">http://dbg/managed.htm</span></a><span style="font-family: &#39;Lucida Console&#39;"> for more details.        <br />Managed frame processing failed, HRESULT 0x80004005 </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;"></span><span style="font-family: &#39;Lucida Console&#39;">// compare !threads and ~* output        <br />0:005&gt; !threads // list managed threads only         <br />ThreadCount:&#160;&#160;&#160;&#160;&#160; 3         <br />UnstartedThread:&#160; 0         <br />BackgroundThread: 3         <br />PendingThread:&#160;&#160;&#160; 0         <br />DeadThread:&#160;&#160;&#160;&#160;&#160;&#160; 0         <br />Hosted Runtime:&#160;&#160; yes         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PreEmptive&#160;&#160; GC Alloc&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Lock         <br />&#160;&#160;&#160;&#160;&#160;&#160; ID OSID ThreadOBJ&#160;&#160;&#160; State&#160;&#160;&#160;&#160; GC&#160;&#160;&#160;&#160;&#160;&#160; Context&#160;&#160;&#160;&#160;&#160;&#160; Domain&#160;&#160; Count APT Exception         <br />&#160;&#160; 5&#160;&#160;&#160; 1 1b08 043576e0&#160;&#160;&#160;&#160;&#160;&#160; 220 Disabled 04f9f214:04f9ffe8 06f529d8&#160;&#160;&#160;&#160; 0 STA         <br />&#160;&#160; 9&#160;&#160;&#160; 2&#160; 928 043689c8&#160;&#160;&#160;&#160;&#160; b220 Enabled&#160; 00000000:00000000 0433c738&#160;&#160;&#160;&#160; 0 MTA (Finalizer)         <br />&#160; 10&#160;&#160;&#160; 3 1e8c 06f509d0&#160;&#160;&#160;&#160;&#160; 1220 Enabled&#160; 00000000:00000000 0433c738&#160;&#160;&#160;&#160; 0 Ukn         <br />0:005&gt; ~* // list all threads         <br />&#160;&#160; 0&#160; Id: 162c.1a28 Suspend: 1 Teb: 7ffde000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: iexplore!wWinMainCRTStartup (00a52d79)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 2&#160; Id: 162c.1020 Suspend: 1 Teb: 7ffdc000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: ole32!CRpcThreadCache::RpcWorkerThreadEntry (76dfe0cc)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 3&#160; Id: 162c.1e00 Suspend: 1 Teb: 7ffda000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: ntdll!TppWaiterpThread (778ab61b)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 4&#160; Id: 162c.1f00 Suspend: 1 Teb: 7ffd9000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: msvcrt!_endthreadex+0x6f (76162da8)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />.&#160; 5&#160; Id: 162c.1b08 Suspend: 1 Teb: 7ffd8000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: IEFRAME!CTabWindow::_TabWindowThreadProc (6c163fdb)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 7&#160; Id: 162c.170 Suspend: 1 Teb: 7ffd6000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: npctrl!CXcpDispatcher::DispatcherTimerCallback (6a6d16f4)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 8&#160; Id: 162c.1cd0 Suspend: 1 Teb: 7ffd5000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: coreclr!DebuggerRCThread::ThreadProcStatic (640eb5cd)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160;&#160; 9&#160; Id: 162c.928 Suspend: 1 Teb: 7ffd4000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: coreclr!Thread::intermediateThreadProc (63fb8e4f)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160; 10&#160; Id: 162c.1e8c Suspend: 1 Teb: 7ffd3000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: coreclr!Thread::intermediateThreadProc (63fb8e4f)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160; 11&#160; Id: 162c.1fac Suspend: 1 Teb: 7ffaf000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: agcore!CMulticoreTaskScheduler::WorkerThread (660547de)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160; 12&#160; Id: 162c.1b78 Suspend: 1 Teb: 7ffae000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: agcore!CMulticoreTaskScheduler::WorkerThread (660547de)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />&#160; 13&#160; Id: 162c.1d18 Suspend: 1 Teb: 7ffdb000 Unfrozen         <br />&#160;&#160;&#160;&#160;&#160; Start: ntdll!RtlUserThreadStart (778c9a78)         <br />&#160;&#160;&#160;&#160;&#160; Priority: 0&#160; Priority class: 32&#160; Affinity: 3         <br />Managed frame processing failed, HRESULT 0x80004005         <br />Integrated managed debugging does not support enumeration of local variables.         <br />See </span><a href="http://dbg/managed.htm"><span style="font-family: &#39;Lucida Console&#39;">http://dbg/managed.htm</span></a><span style="font-family: &#39;Lucida Console&#39;"> for more details.</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// compare !clrstack &amp; k output        <br />0:005&gt; !clrstack -p // list managed stack frames only         <br />OS Thread Id: 0x1b08 (5)         <br />ESP&#160;&#160;&#160;&#160;&#160;&#160; EIP&#160;&#160;&#160;&#160; <br />0450f850 04800398 SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)         <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this (&lt;CLR reg&gt;) = 0x04f59c78         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; sender (&lt;CLR reg&gt;) = 0x04f5b948         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; e (0x0450f854) = 0x04f9f1f0 </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick()        <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this (0x0450f864) = 0x04f5b948 </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450f870 048cdd10 System.Windows.Controls.Button.OnClick()        <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this = &lt;no data&gt; </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450f880 048cdc3d System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs)        <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; this (0x0450f884) = 0x04f5b948         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; e (0x0450f880) = 0x04f9f188 </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp(System.Windows.Controls.Control, System.EventArgs)        <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ctrl = &lt;no data&gt;         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; e = &lt;no data&gt; </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent(IntPtr, IntPtr, Int32, System.String)        <br />&#160;&#160;&#160; PARAMETERS:         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; unmanagedObj (0x0450f8f8) = 0x04355c48         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; unmanagedObjArgs (0x0450f8f4) = 0x0707be00         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; argsTypeIndex (0x0450f928) = 0x000000a9         <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; eventName (0x0450f924) = 0x04f9f16c </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0450fa74 63ef17b0 [GCFrame: 0450fa74]        <br />0450fb30 63ef17b0 [ContextTransitionFrame: 0450fb30]         <br />0450fc28 63ef17b0 [UMThkCallFrame: 0450fc28]         <br />0:005&gt; kP // list all stack frames         <br />ChildEBP RetAddr&#160; <br />0450f868 048cde0d SilverlightApplication1!Button_Click(&lt;HRESULT 0x80004001&gt;)         <br />0450f868 048cdd10 System_Windows!System.Windows.Controls.Primitives.ButtonBase.OnClick(&lt;HRESULT 0x80004001&gt;)+0x5d         <br />0450f878 048cdc3d System_Windows!System.Windows.Controls.Button.OnClick(&lt;HRESULT 0x80004001&gt;)+0x48         <br />0450f888 048cdba1 System_Windows!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(&lt;HRESULT 0x80004001&gt;)+0x85         <br />0450f898 0483a0e7 System_Windows!System.Windows.Controls.Control.OnMouseLeftButtonUp(&lt;HRESULT 0x80004001&gt;)+0x41         <br />0450f91c 63ef17b0 System_Windows!MS.Internal.JoltHelper.FireEvent(&lt;HRESULT 0x80004001&gt;)+0x1b7         <br />0450f934 63ef5f98 coreclr!CallDescrWorker+0x33         <br />0450f9b0 63f032bc coreclr!CallDescrWorkerWithHandler+0x8e         <br />0450f9d0 63f0345c coreclr!ForwardCallToManagedMethod+0x55         <br />0450faf4 63fc4abf coreclr!DoUMThunkCallWorker+0x199         <br />0450fbe0 04c513d2 coreclr!DoUMThunkCall+0x1b4         <br />WARNING: Frame IP not in any known module. Following frames may be wrong.         <br />0450fc10 6607e0db 0x4c513d2         <br />0450fc70 6a6dc1fc agcore!CCoreServices::CLR_FireEvent+0x183         <br />Managed frame processing failed, HRESULT 0x80004005         <br />0450fc84 6a6dc187 npctrl!CommonBrowserHost::CLR_FireEvent+0x2a         <br />0450fcc8 6a6dc048 npctrl!CControlBase::ScriptCallback+0x366         <br />0450fd08 6a6dc013 npctrl!CXcpDispatcher::OnScriptCallback+0xee         <br />0450fd14 6a6dbfef npctrl!CXcpDispatcher::OnWindowMessage+0x3a         <br />0450fd2c 7731f8d2 npctrl!CXcpDispatcher::WindowProc+0x7f         <br />0450fd58 7731f794 USER32!InternalCallWinProc+0x23         <br />0450fdd0 77320008 USER32!UserCallWinProcCheckWow+0x14b</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// examine heap, note the convenience of strong typed object heap,        <br />// instead of un-typed bytes as in native heap         <br />0:005&gt; !dumpheap -type SilverlightApplication1         <br />Address&#160;&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160;&#160; Size         <br />04f4f31c 046336b0&#160;&#160;&#160;&#160;&#160;&#160; 36&#160;&#160;&#160;&#160; <br /><strong>04f59c78</strong> 04633a6c&#160;&#160;&#160;&#160;&#160;&#160; <strong>68</strong>&#160;&#160;&#160;&#160; <br />total 2 objects         <br />Statistics:         <br />&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160; Count&#160;&#160;&#160; TotalSize Class Name         <br />046336b0&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 36 SilverlightApplication1.App         <br />04633a6c&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>68</strong> SilverlightApplication1.Page         <br />Total 2 objects         <br />0:005&gt; !do <strong>04f59c78</strong>         <br />Name:&#160;&#160;&#160;&#160;&#160;&#160;&#160; SilverlightApplication1.Page         <br />MethodTable: 04633a6c         <br />EEClass:&#160;&#160;&#160;&#160; 0463196c         <br />Size:&#160;&#160;&#160;&#160;&#160;&#160;&#160; 68(0x44) bytes         <br />File:&#160;&#160;&#160;&#160;&#160;&#160;&#160; SilverlightApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null         <br />Fields:         <br />&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160; Field&#160;&#160; Offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type VT&#160;&#160;&#160;&#160; Attr&#160;&#160;&#160; Value Name         <br />047d97a0&#160; 40000dc&#160;&#160;&#160;&#160;&#160;&#160;&#160; 4 ...al.NativeResource&#160; 0 instance 04f5a5c0 m_nativePtr         <br />04853ab8&#160; 40000df&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 ... System.Windows]]&#160; 0 instance 00000000 _valueTable         <br />047d9874&#160; 40000e0&#160;&#160;&#160;&#160;&#160;&#160;&#160; c ...reTypeEventHelper&#160; 0 instance 04f5a600 _coreTypeEventHelper         <br />04856388&#160; 40000e3&#160;&#160;&#160;&#160;&#160;&#160; 10 ...bject, mscorlib]]&#160; 0 instance 04f79a58 _treeChildren         <br />047ae03c&#160; 40000e4&#160;&#160;&#160;&#160;&#160;&#160; 14 ...rnal.IManagedPeer&#160; 0 instance 00000000 _treeParent         <br />03d50a90&#160; 40000dd&#160;&#160;&#160;&#160;&#160; 2b0&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.IntPtr&#160; 1&#160;&#160; shared&#160;&#160; static StaticNativePointer         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />03d50f28&#160; 40000de&#160;&#160;&#160;&#160;&#160; 2b4&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1&#160;&#160; shared&#160;&#160; static _isCoreCreate         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:0 &lt;&lt;         <br />047ae384&#160; 40000e1&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 ....DependencyObject&#160; 0&#160;&#160; shared&#160;&#160; static PropertyReferencesHolder         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f489b8 &lt;&lt;         <br />04661618&#160; 40000e2&#160;&#160;&#160;&#160;&#160;&#160;&#160; c ...flection.Assembly&#160; 0&#160;&#160; shared&#160;&#160; static _executingAssembly         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />047d0b90&#160; 40000f1&#160;&#160;&#160;&#160;&#160;&#160; 18 ...rs.AutomationPeer&#160; 0 instance 00000000 m_pAP         <br />047d7404&#160; 40000e8&#160;&#160;&#160;&#160;&#160;&#160; 10 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static OpacityProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4a8 &lt;&lt;         <br />047d7404&#160; 40000e9&#160;&#160;&#160;&#160;&#160;&#160; 14 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ClipProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4d0 &lt;&lt;         <br />047d7404&#160; 40000ea&#160;&#160;&#160;&#160;&#160;&#160; 18 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderTransformProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4f8 &lt;&lt;         <br />047d7404&#160; 40000eb&#160;&#160;&#160;&#160;&#160;&#160; 1c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static OpacityMaskProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a50c &lt;&lt;         <br />047d7404&#160; 40000ec&#160;&#160;&#160;&#160;&#160;&#160; 20 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderTransformOriginProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a534 &lt;&lt;         <br />047d7404&#160; 40000ed&#160;&#160;&#160;&#160;&#160;&#160; 24 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsHitTestVisibleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a548 &lt;&lt;         <br />047d7404&#160; 40000ee&#160;&#160;&#160;&#160;&#160;&#160; 28 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VisibilityProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a570 &lt;&lt;         <br />047d7404&#160; 40000ef&#160;&#160;&#160;&#160;&#160;&#160; 2c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderSizeProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a598 &lt;&lt;         <br />047d7404&#160; 40000f0&#160;&#160;&#160;&#160;&#160;&#160; 30 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static UseLayoutRoundingProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a5ac &lt;&lt;         <br />00000000&#160; 4000108&#160;&#160;&#160;&#160;&#160;&#160; 1c&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 instance 00000000 BindingValidationError         <br />04856ae4&#160; 400010a&#160;&#160;&#160;&#160;&#160;&#160; 20 ...angedEventHandler&#160; 0 instance 00000000 DPChanged         <br />048bc8a4&#160; 400010b&#160;&#160;&#160;&#160;&#160;&#160; 24 ...angedEventHandler&#160; 0 instance 00000000 DataContextChanged         <br />03d50f28&#160; 400010c&#160;&#160;&#160;&#160;&#160;&#160; 2c&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _isDataContextBound         <br />0481f43c&#160; 400010d&#160;&#160;&#160;&#160;&#160;&#160; 28 ...angedEventHandler&#160; 0 instance 00000000 _sizeChanged         <br />047d7404&#160; 40000f2&#160;&#160;&#160;&#160;&#160;&#160; 34 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TriggersProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a144 &lt;&lt;         <br />047d7404&#160; 40000f3&#160;&#160;&#160;&#160;&#160;&#160; 38 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ResourcesProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a158 &lt;&lt;         <br />047d7404&#160; 40000f4&#160;&#160;&#160;&#160;&#160;&#160; 3c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static LanguageProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a180 &lt;&lt;         <br />047d7404&#160; 40000f5&#160;&#160;&#160;&#160;&#160;&#160; 40 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ActualWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a194 &lt;&lt;         <br />047d7404&#160; 40000f6&#160;&#160;&#160;&#160;&#160;&#160; 44 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ActualHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1a8 &lt;&lt;         <br />047d7404&#160; 40000f7&#160;&#160;&#160;&#160;&#160;&#160; 48 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static WidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1bc &lt;&lt;         <br />047d7404&#160; 40000f8&#160;&#160;&#160;&#160;&#160;&#160; 4c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1d0 &lt;&lt;         <br />047d7404&#160; 40000f9&#160;&#160;&#160;&#160;&#160;&#160; 50 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MinWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1e4 &lt;&lt;         <br />047d7404&#160; 40000fa&#160;&#160;&#160;&#160;&#160;&#160; 54 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MaxWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1f8 &lt;&lt;         <br />047d7404&#160; 40000fb&#160;&#160;&#160;&#160;&#160;&#160; 58 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MinHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a20c &lt;&lt;         <br />047d7404&#160; 40000fc&#160;&#160;&#160;&#160;&#160;&#160; 5c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MaxHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a220 &lt;&lt;         <br />047d7404&#160; 40000fd&#160;&#160;&#160;&#160;&#160;&#160; 60 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HorizontalAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a234 &lt;&lt;         <br />047d7404&#160; 40000fe&#160;&#160;&#160;&#160;&#160;&#160; 64 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VerticalAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a248 &lt;&lt;         <br />047d7404&#160; 40000ff&#160;&#160;&#160;&#160;&#160;&#160; 68 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MarginProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a25c &lt;&lt;         <br />047d7404&#160; 4000100&#160;&#160;&#160;&#160;&#160;&#160; 6c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static StyleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a284 &lt;&lt;         <br />047d7404&#160; 4000101&#160;&#160;&#160;&#160;&#160;&#160; 70 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ParentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2ac &lt;&lt;         <br />047d7404&#160; 4000102&#160;&#160;&#160;&#160;&#160;&#160; 74 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static NameProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2c0 &lt;&lt;         <br />047d7404&#160; 4000103&#160;&#160;&#160;&#160;&#160;&#160; 78 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TagProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2d4 &lt;&lt;         <br />047d7404&#160; 4000104&#160;&#160;&#160;&#160;&#160;&#160; 7c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TagInternalProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2fc &lt;&lt;         <br />04851464&#160; 4000105&#160;&#160;&#160;&#160;&#160;&#160; 80 ...ndows.RoutedEvent&#160; 0&#160;&#160; shared&#160;&#160; static LoadedEvent         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a420 &lt;&lt;         <br />047d7404&#160; 4000106&#160;&#160;&#160;&#160;&#160;&#160; 84 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static CursorProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a440 &lt;&lt;         <br />047d7404&#160; 4000107&#160;&#160;&#160;&#160;&#160;&#160; 88 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static InstanceDelegateStoreProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a468 &lt;&lt;         <br />047d7404&#160; 4000109&#160;&#160;&#160;&#160;&#160;&#160; 8c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static DataContextProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a494 &lt;&lt;         <br />047a1e2c&#160; 400010e&#160;&#160;&#160;&#160;&#160;&#160; 90 ...rence, mscorlib]]&#160; 0&#160;&#160; shared&#160;&#160; static _staticDelegateList         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />00000000&#160; 4000264&#160;&#160;&#160;&#160;&#160;&#160; 30 ...angedEventHandler&#160; 0 instance 00000000 IsEnabledChanged         <br />047d7404&#160; 4000252&#160;&#160;&#160;&#160;&#160; 430 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsTabStopProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59ce4 &lt;&lt;         <br />047d7404&#160; 4000253&#160;&#160;&#160;&#160;&#160; 434 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TabIndexProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59cf8 &lt;&lt;         <br />047d7404&#160; 4000254&#160;&#160;&#160;&#160;&#160; 438 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TemplateProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d20 &lt;&lt;         <br />047d7404&#160; 4000255&#160;&#160;&#160;&#160;&#160; 43c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TabNavigationProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d48 &lt;&lt;         <br />047d7404&#160; 4000256&#160;&#160;&#160;&#160;&#160; 440 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static PaddingProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d70 &lt;&lt;         <br />047d7404&#160; 4000257&#160;&#160;&#160;&#160;&#160; 444 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HorizontalContentAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d98 &lt;&lt;         <br />047d7404&#160; 4000258&#160;&#160;&#160;&#160;&#160; 448 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VerticalContentAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59dc0 &lt;&lt;         <br />047d7404&#160; 4000259&#160;&#160;&#160;&#160;&#160; 44c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BackgroundProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59de8 &lt;&lt;         <br />047d7404&#160; 400025a&#160;&#160;&#160;&#160;&#160; 450 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BorderBrushProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59dfc &lt;&lt;         <br />047d7404&#160; 400025b&#160;&#160;&#160;&#160;&#160; 454 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BorderThicknessProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e10 &lt;&lt;         <br />047d7404&#160; 400025c&#160;&#160;&#160;&#160;&#160; 458 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontSizeProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e24 &lt;&lt;         <br />047d7404&#160; 400025d&#160;&#160;&#160;&#160;&#160; 45c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontFamilyProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e4c &lt;&lt;         <br />047d7404&#160; 400025e&#160;&#160;&#160;&#160;&#160; 460 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ForegroundProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e60 &lt;&lt;         <br />047d7404&#160; 400025f&#160;&#160;&#160;&#160;&#160; 464 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontWeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e88 &lt;&lt;         <br />047d7404&#160; 4000260&#160;&#160;&#160;&#160;&#160; 468 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontStyleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59eb0 &lt;&lt;         <br />047d7404&#160; 4000261&#160;&#160;&#160;&#160;&#160; 46c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontStretchProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59ed8 &lt;&lt;         <br />047d7404&#160; 4000262&#160;&#160;&#160;&#160;&#160; 470 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static DefaultStyleKeyProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59eec &lt;&lt;         <br />047d7404&#160; 4000263&#160;&#160;&#160;&#160;&#160; 474 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsEnabledProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59f00 &lt;&lt;         <br />04857f14&#160; 4000265&#160;&#160;&#160;&#160;&#160; 478 ... System.Windows]]&#160; 0&#160;&#160; shared&#160;&#160; static _resourceDictionaryCache         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5cae4 &lt;&lt;         <br />03cf5668&#160; 4000266&#160;&#160;&#160;&#160;&#160; 47c&#160;&#160;&#160;&#160;&#160; System.Object[]&#160; 0&#160;&#160; shared&#160;&#160; static _controlDelgates         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59f14 &lt;&lt;         <br />047d7404&#160; 4000501&#160;&#160;&#160;&#160;&#160; 77c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ContentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59cd0 &lt;&lt;         <br />04852580&#160; 4000002&#160;&#160;&#160;&#160;&#160;&#160; 34 ...ows.Controls.Grid&#160; 0 instance 04f79770 LayoutRoot         <br /><strong>04852a10</strong>&#160; 4000003&#160;&#160;&#160;&#160;&#160;&#160; 38 ...s.Controls.Button&#160; 0 instance <strong>04f5b948</strong> <strong>button</strong>         <br />03d50f28&#160; 4000004&#160;&#160;&#160;&#160;&#160;&#160; 3c&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 _contentLoaded </span></p>    <p><span style="font-family: &#39;Lucida Console&#39;"></span><span style="font-family: &#39;Lucida Console&#39;">// two lines above is the button object of the page object        <br />// remember its address <strong>04f5b948</strong>, since we will refer to it later         <br />// we can get the same address for the button object via dumpheap command:         <br />0:005&gt; !dumpheap -mt <strong>04852a10</strong>&#160; <br />Address&#160;&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160;&#160; Size         <br /><strong>04f5b948</strong> 04852a10&#160;&#160;&#160;&#160;&#160;&#160; 92&#160;&#160;&#160;&#160; <br />total 1 objects         <br />Statistics:         <br />&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160; Count&#160;&#160;&#160; TotalSize Class Name         <br />04852a10&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 92 System.Windows.Controls.Button         <br />Total 1 objects         <br />0:005&gt; !gcwhere 04f5b948 // button is in gen0, since there is no GC yet         <br />Address&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Gen&#160;&#160; Heap&#160;&#160; segment&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; begin&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; allocated&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; size         <br />04f5b948&#160;&#160; 0&#160;&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160; 04f40000&#160;&#160; 04f41000&#160;&#160; 04f9fff4&#160;&#160;&#160; 0x5c(92)         <br />0:005&gt; !gcroot 04f5b948&#160; // see who's holding reference to the button object         <br />Note: Roots found on stacks may be false positives. Run &quot;!help gcroot&quot; for         <br />more info.         <br />// registry references         <br />ecx:Root:&#160; 04f59c78(SilverlightApplication1.Page)-&gt;         <br />&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />edx:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />// stack references         <br />Scan Thread 5 OSTHread 1b08         <br />ESP:450f860:Root:&#160; 04f5ca18(System.Windows.RoutedEventHandler)-&gt;         <br />&#160; 04f59c78(SilverlightApplication1.Page)-&gt;         <br />&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f864:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f874:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f884:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f894:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f8d4:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />ESP:450f8e4:Root:&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />Scan Thread 9 OSTHread 928         <br />Scan Thread 10 OSTHread 1e8c         <br />// domain references         <br />DOMAIN(06F529D8):HANDLE(Pinned):46412f8:Root:&#160; 05f44260(System.Object[])-&gt;         <br />&#160; 04f45234(System.Collections.Generic.List`1[[System.Object, mscorlib]])-&gt;         <br />&#160; 04f59980(System.Object[])-&gt;         <br />&#160; 04f59c78(SilverlightApplication1.Page)-&gt;         <br />&#160; 04f5b948(System.Windows.Controls.Button)-&gt;         <br />Managed frame processing failed, HRESULT 0x80004005         <br />Integrated managed debugging does not support enumeration of local variables.         <br />See </span><a href="http://dbg/managed.htm"><span style="font-family: &#39;Lucida Console&#39;">http://dbg/managed.htm</span></a><span style="font-family: &#39;Lucida Console&#39;"> for more details.</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// examine the button object itself        <br />0:005&gt; !do <strong>04f5b948</strong>         <br />Name:&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.Windows.Controls.Button         <br />MethodTable: 04852a10         <br />EEClass:&#160;&#160;&#160;&#160; 0482e5f0         <br />Size:&#160;&#160;&#160;&#160;&#160;&#160;&#160; 92(0x5c) bytes         <br />File:&#160;&#160;&#160;&#160;&#160;&#160;&#160; c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll         <br />Fields:         <br />&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160; Field&#160;&#160; Offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type VT&#160;&#160;&#160;&#160; Attr&#160;&#160;&#160; Value Name         <br />047d97a0&#160; 40000dc&#160;&#160;&#160;&#160;&#160;&#160;&#160; 4 ...al.NativeResource&#160; 0 instance 04f5bd58 m_nativePtr         <br />04853ab8&#160; 40000df&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 ... System.Windows]]&#160; 0 instance 04f5c0bc _valueTable         <br />047d9874&#160; 40000e0&#160;&#160;&#160;&#160;&#160;&#160;&#160; c ...reTypeEventHelper&#160; 0 instance 04f5bd88 _coreTypeEventHelper         <br />04856388&#160; 40000e3&#160;&#160;&#160;&#160;&#160;&#160; 10 ...bject, mscorlib]]&#160; 0 instance 04f5bee8 _treeChildren         <br />047ae03c&#160; 40000e4&#160;&#160;&#160;&#160;&#160;&#160; 14 ...rnal.IManagedPeer&#160; 0 instance 04f79770 _treeParent         <br />03d50a90&#160; 40000dd&#160;&#160;&#160;&#160;&#160; 2b0&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.IntPtr&#160; 1&#160;&#160; shared&#160;&#160; static StaticNativePointer         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />03d50f28&#160; 40000de&#160;&#160;&#160;&#160;&#160; 2b4&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1&#160;&#160; shared&#160;&#160; static _isCoreCreate         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:0 &lt;&lt;         <br />047ae384&#160; 40000e1&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 ....DependencyObject&#160; 0&#160;&#160; shared&#160;&#160; static PropertyReferencesHolder         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f489b8 &lt;&lt;         <br />04661618&#160; 40000e2&#160;&#160;&#160;&#160;&#160;&#160;&#160; c ...flection.Assembly&#160; 0&#160;&#160; shared&#160;&#160; static _executingAssembly         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />047d0b90&#160; 40000f1&#160;&#160;&#160;&#160;&#160;&#160; 18 ...rs.AutomationPeer&#160; 0 instance 00000000 m_pAP         <br />047d7404&#160; 40000e8&#160;&#160;&#160;&#160;&#160;&#160; 10 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static OpacityProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4a8 &lt;&lt;         <br />047d7404&#160; 40000e9&#160;&#160;&#160;&#160;&#160;&#160; 14 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ClipProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4d0 &lt;&lt;         <br />047d7404&#160; 40000ea&#160;&#160;&#160;&#160;&#160;&#160; 18 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderTransformProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a4f8 &lt;&lt;         <br />047d7404&#160; 40000eb&#160;&#160;&#160;&#160;&#160;&#160; 1c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static OpacityMaskProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a50c &lt;&lt;         <br />047d7404&#160; 40000ec&#160;&#160;&#160;&#160;&#160;&#160; 20 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderTransformOriginProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a534 &lt;&lt;         <br />047d7404&#160; 40000ed&#160;&#160;&#160;&#160;&#160;&#160; 24 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsHitTestVisibleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a548 &lt;&lt;         <br />047d7404&#160; 40000ee&#160;&#160;&#160;&#160;&#160;&#160; 28 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VisibilityProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a570 &lt;&lt;         <br />047d7404&#160; 40000ef&#160;&#160;&#160;&#160;&#160;&#160; 2c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static RenderSizeProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a598 &lt;&lt;         <br />047d7404&#160; 40000f0&#160;&#160;&#160;&#160;&#160;&#160; 30 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static UseLayoutRoundingProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a5ac &lt;&lt;         <br />00000000&#160; 4000108&#160;&#160;&#160;&#160;&#160;&#160; 1c&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 instance 00000000 BindingValidationError         <br />04856ae4&#160; 400010a&#160;&#160;&#160;&#160;&#160;&#160; 20 ...angedEventHandler&#160; 0 instance 00000000 DPChanged         <br />048bc8a4&#160; 400010b&#160;&#160;&#160;&#160;&#160;&#160; 24 ...angedEventHandler&#160; 0 instance 00000000 DataContextChanged         <br />03d50f28&#160; 400010c&#160;&#160;&#160;&#160;&#160;&#160; 2c&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _isDataContextBound         <br />0481f43c&#160; 400010d&#160;&#160;&#160;&#160;&#160;&#160; 28 ...angedEventHandler&#160; 0 instance 00000000 _sizeChanged         <br />047d7404&#160; 40000f2&#160;&#160;&#160;&#160;&#160;&#160; 34 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TriggersProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a144 &lt;&lt;         <br />047d7404&#160; 40000f3&#160;&#160;&#160;&#160;&#160;&#160; 38 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ResourcesProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a158 &lt;&lt;         <br />047d7404&#160; 40000f4&#160;&#160;&#160;&#160;&#160;&#160; 3c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static LanguageProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a180 &lt;&lt;         <br />047d7404&#160; 40000f5&#160;&#160;&#160;&#160;&#160;&#160; 40 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ActualWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a194 &lt;&lt;         <br />047d7404&#160; 40000f6&#160;&#160;&#160;&#160;&#160;&#160; 44 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ActualHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1a8 &lt;&lt;         <br />047d7404&#160; 40000f7&#160;&#160;&#160;&#160;&#160;&#160; 48 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static WidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1bc &lt;&lt;         <br />047d7404&#160; 40000f8&#160;&#160;&#160;&#160;&#160;&#160; 4c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1d0 &lt;&lt;         <br />047d7404&#160; 40000f9&#160;&#160;&#160;&#160;&#160;&#160; 50 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MinWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1e4 &lt;&lt;         <br />047d7404&#160; 40000fa&#160;&#160;&#160;&#160;&#160;&#160; 54 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MaxWidthProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a1f8 &lt;&lt;         <br />047d7404&#160; 40000fb&#160;&#160;&#160;&#160;&#160;&#160; 58 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MinHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a20c &lt;&lt;         <br />047d7404&#160; 40000fc&#160;&#160;&#160;&#160;&#160;&#160; 5c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MaxHeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a220 &lt;&lt;         <br />047d7404&#160; 40000fd&#160;&#160;&#160;&#160;&#160;&#160; 60 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HorizontalAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a234 &lt;&lt;         <br />047d7404&#160; 40000fe&#160;&#160;&#160;&#160;&#160;&#160; 64 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VerticalAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a248 &lt;&lt;         <br />047d7404&#160; 40000ff&#160;&#160;&#160;&#160;&#160;&#160; 68 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static MarginProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a25c &lt;&lt;         <br />047d7404&#160; 4000100&#160;&#160;&#160;&#160;&#160;&#160; 6c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static StyleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a284 &lt;&lt;         <br />047d7404&#160; 4000101&#160;&#160;&#160;&#160;&#160;&#160; 70 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ParentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2ac &lt;&lt;         <br />047d7404&#160; 4000102&#160;&#160;&#160;&#160;&#160;&#160; 74 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static NameProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2c0 &lt;&lt;         <br />047d7404&#160; 4000103&#160;&#160;&#160;&#160;&#160;&#160; 78 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TagProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2d4 &lt;&lt;         <br />047d7404&#160; 4000104&#160;&#160;&#160;&#160;&#160;&#160; 7c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TagInternalProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a2fc &lt;&lt;         <br />04851464&#160; 4000105&#160;&#160;&#160;&#160;&#160;&#160; 80 ...ndows.RoutedEvent&#160; 0&#160;&#160; shared&#160;&#160; static LoadedEvent         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a420 &lt;&lt;         <br />047d7404&#160; 4000106&#160;&#160;&#160;&#160;&#160;&#160; 84 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static CursorProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a440 &lt;&lt;         <br />047d7404&#160; 4000107&#160;&#160;&#160;&#160;&#160;&#160; 88 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static InstanceDelegateStoreProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a468 &lt;&lt;         <br />047d7404&#160; 4000109&#160;&#160;&#160;&#160;&#160;&#160; 8c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static DataContextProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5a494 &lt;&lt;         <br />047a1e2c&#160; 400010e&#160;&#160;&#160;&#160;&#160;&#160; 90 ...rence, mscorlib]]&#160; 0&#160;&#160; shared&#160;&#160; static _staticDelegateList         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:00000000 &lt;&lt;         <br />00000000&#160; 4000264&#160;&#160;&#160;&#160;&#160;&#160; 30 ...angedEventHandler&#160; 0 instance 00000000 IsEnabledChanged         <br />047d7404&#160; 4000252&#160;&#160;&#160;&#160;&#160; 430 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsTabStopProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59ce4 &lt;&lt;         <br />047d7404&#160; 4000253&#160;&#160;&#160;&#160;&#160; 434 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TabIndexProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59cf8 &lt;&lt;         <br />047d7404&#160; 4000254&#160;&#160;&#160;&#160;&#160; 438 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TemplateProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d20 &lt;&lt;         <br />047d7404&#160; 4000255&#160;&#160;&#160;&#160;&#160; 43c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static TabNavigationProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d48 &lt;&lt;         <br />047d7404&#160; 4000256&#160;&#160;&#160;&#160;&#160; 440 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static PaddingProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d70 &lt;&lt;         <br />047d7404&#160; 4000257&#160;&#160;&#160;&#160;&#160; 444 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static HorizontalContentAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59d98 &lt;&lt;         <br />047d7404&#160; 4000258&#160;&#160;&#160;&#160;&#160; 448 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static VerticalContentAlignmentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59dc0 &lt;&lt;         <br />047d7404&#160; 4000259&#160;&#160;&#160;&#160;&#160; 44c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BackgroundProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59de8 &lt;&lt;         <br />047d7404&#160; 400025a&#160;&#160;&#160;&#160;&#160; 450 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BorderBrushProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59dfc &lt;&lt;         <br />047d7404&#160; 400025b&#160;&#160;&#160;&#160;&#160; 454 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static BorderThicknessProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e10 &lt;&lt;         <br />047d7404&#160; 400025c&#160;&#160;&#160;&#160;&#160; 458 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontSizeProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e24 &lt;&lt;         <br />047d7404&#160; 400025d&#160;&#160;&#160;&#160;&#160; 45c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontFamilyProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e4c &lt;&lt;         <br />047d7404&#160; 400025e&#160;&#160;&#160;&#160;&#160; 460 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ForegroundProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e60 &lt;&lt;         <br />047d7404&#160; 400025f&#160;&#160;&#160;&#160;&#160; 464 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontWeightProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59e88 &lt;&lt;         <br />047d7404&#160; 4000260&#160;&#160;&#160;&#160;&#160; 468 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontStyleProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59eb0 &lt;&lt;         <br />047d7404&#160; 4000261&#160;&#160;&#160;&#160;&#160; 46c ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static FontStretchProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59ed8 &lt;&lt;         <br />047d7404&#160; 4000262&#160;&#160;&#160;&#160;&#160; 470 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static DefaultStyleKeyProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59eec &lt;&lt;         <br />047d7404&#160; 4000263&#160;&#160;&#160;&#160;&#160; 474 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsEnabledProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59f00 &lt;&lt;         <br />04857f14&#160; 4000265&#160;&#160;&#160;&#160;&#160; 478 ... System.Windows]]&#160; 0&#160;&#160; shared&#160;&#160; static _resourceDictionaryCache         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5cae4 &lt;&lt;         <br />03cf5668&#160; 4000266&#160;&#160;&#160;&#160;&#160; 47c&#160;&#160;&#160;&#160;&#160; System.Object[]&#160; 0&#160;&#160; shared&#160;&#160; static _controlDelgates         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f59f14 &lt;&lt;         <br />03cf44e8&#160; 40002b4&#160;&#160;&#160;&#160;&#160;&#160; 34&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.Object&#160; 0 instance 00000000 _treeContent         <br />047d7404&#160; 40002b3&#160;&#160;&#160;&#160;&#160; 530 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ContentTemplateProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5bd30 &lt;&lt;         <br />047d7404&#160; 40002b5&#160;&#160;&#160;&#160;&#160; 534 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ContentProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5bd44 &lt;&lt;         <br />03d50f28&#160; 40005aa&#160;&#160;&#160;&#160;&#160;&#160; 40&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 _isLoaded         <br />03d50f28&#160; 40005ab&#160;&#160;&#160;&#160;&#160;&#160; 41&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 _isMouseCaptured         <br />03d50f28&#160; 40005ac&#160;&#160;&#160;&#160;&#160;&#160; 42&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _isSpaceKeyDown         <br />03d50f28&#160; 40005ad&#160;&#160;&#160;&#160;&#160;&#160; 43&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _isMouseLeftButtonDown         <br />04852208&#160; 40005ae&#160;&#160;&#160;&#160;&#160;&#160; 48 System.Windows.Point&#160; 1 instance 04f5b990 _mousePosition         <br />048b5f98&#160; 40005af&#160;&#160;&#160;&#160;&#160;&#160; 38 ...mation.Storyboard&#160; 0 instance 00000000 _currentState         <br />03d50f28&#160; 40005b0&#160;&#160;&#160;&#160;&#160;&#160; 44&#160;&#160;&#160;&#160;&#160;&#160; System.Boolean&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _suspendStateChanges         <br />0481fae0&#160; 40005b1&#160;&#160;&#160;&#160;&#160;&#160; 3c ...outedEventHandler&#160; 0 instance <strong>04f5ca18</strong> <strong>Click</strong>         <br />047d7404&#160; 40005a6&#160;&#160;&#160;&#160;&#160; 7e0 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static ClickModeProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5ba7c &lt;&lt;         <br />047d7404&#160; 40005a7&#160;&#160;&#160;&#160;&#160; 7e4 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsFocusedProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5bb38 &lt;&lt;         <br />047d7404&#160; 40005a8&#160;&#160;&#160;&#160;&#160; 7e8 ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsMouseOverProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5bbd8 &lt;&lt;         <br />047d7404&#160; 40005a9&#160;&#160;&#160;&#160;&#160; 7ec ...ependencyProperty&#160; 0&#160;&#160; shared&#160;&#160; static IsPressedProperty         <br />&#160;&#160;&#160; &gt;&gt; Domain:Value&#160; 0433c738:NotInit&#160; 06f529d8:04f5bc40 &lt;&lt;</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// dump button.Click field (9 lines above)        <br />0:005&gt; !do <strong>04f5ca18</strong>         <br />Name:&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.Windows.RoutedEventHandler         <br />MethodTable: 0481fae0         <br />EEClass:&#160;&#160;&#160;&#160; 0482c99c         <br />Size:&#160;&#160;&#160;&#160;&#160;&#160;&#160; 32(0x20) bytes         <br />File:&#160;&#160;&#160;&#160;&#160;&#160;&#160; c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll         <br />Fields:         <br />&#160;&#160;&#160;&#160;&#160; MT&#160;&#160;&#160; Field&#160;&#160; Offset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Type VT&#160;&#160;&#160;&#160; Attr&#160;&#160;&#160; Value Name         <br />03cf44e8&#160; 40001e0&#160;&#160;&#160;&#160;&#160;&#160;&#160; 4&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.Object&#160; 0 instance <strong>04f59c78</strong> _target         <br />04663c58&#160; 40001e1&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 ...ection.MethodBase&#160; 0 instance 00000000 _methodBase         <br />03d50a90&#160; 40001e2&#160;&#160;&#160;&#160;&#160;&#160;&#160; c&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.IntPtr&#160; 1 instance&#160; <strong>463c08c</strong> _methodPtr         <br />03d50a90&#160; 40001e3&#160;&#160;&#160;&#160;&#160;&#160; 10&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.IntPtr&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _methodPtrAux         <br />03cf44e8&#160; 40001e4&#160;&#160;&#160;&#160;&#160;&#160; 14&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.Object&#160; 0 instance 00000000 _invocationList         <br />03d50a90&#160; 40001e5&#160;&#160;&#160;&#160;&#160;&#160; 18&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.IntPtr&#160; 1 instance&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 _invocationCount</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">0:005&gt; !do -nofields <strong>04f59c78 </strong>// verify _target is page         <br />Name:&#160;&#160;&#160;&#160;&#160;&#160;&#160; SilverlightApplication1.Page         <br />MethodTable: 04633a6c         <br />EEClass:&#160;&#160;&#160;&#160; 0463196c         <br />Size:&#160;&#160;&#160;&#160;&#160;&#160;&#160; 68(0x44) bytes         <br />File:&#160;&#160;&#160;&#160;&#160;&#160;&#160; SilverlightApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</span></p>    <p><span style="font-family: &#39;Lucida Console&#39;">// verify _methodPtr points to Button_Click        <br />// see how they are all linked together         <br />0:005&gt; ln 463c08c         <br />(0463c08c)&#160;&#160; SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)         <br />0:005&gt; u 463c08c // jit-ed method stub         <br />SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs):         <br />0463c08c b8303a6304&#160;&#160;&#160;&#160;&#160; mov&#160;&#160;&#160;&#160; eax,4633A30h         <br />0463c091 89ed&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mov&#160;&#160;&#160;&#160; ebp,ebp         <br />0463c093 e900431c00&#160;&#160;&#160;&#160;&#160; jmp&#160;&#160;&#160;&#160; SilverlightApplication1!Button_Click (<strong>04800398</strong>)         <br />0463c098 0000&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; add&#160;&#160;&#160;&#160; byte ptr [eax],al         <br />0463c09a 0000&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; add&#160;&#160;&#160;&#160; byte ptr [eax],al         <br />0463c09c 0000&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; add&#160;&#160;&#160;&#160; byte ptr [eax],al         <br />0463c09e 0000&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; add&#160;&#160;&#160;&#160; byte ptr [eax],al         <br />0463c0a0 0000&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; add&#160;&#160;&#160;&#160; byte ptr [eax],al         <br />0:005&gt; u eip // jit-ed native code         <br />SilverlightApplication1!Button_Click:         <br /><strong>04800398</strong> 55&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; push&#160;&#160;&#160; ebp         <br />04800399 8bec&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mov&#160;&#160;&#160;&#160; ebp,esp         <br />0480039b 83ec08&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; sub&#160;&#160;&#160;&#160; esp,8         <br />0480039e 894dfc&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mov&#160;&#160;&#160;&#160; dword ptr [ebp-4],ecx         <br />048003a1 8955f8&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mov&#160;&#160;&#160;&#160; dword ptr [ebp-8],edx         <br />048003a4 833d7435630400&#160; cmp&#160;&#160;&#160;&#160; dword ptr ds:[4633574h],0         <br />048003ab 7405&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; je&#160;&#160;&#160;&#160;&#160; SilverlightApplication1!Button_Click+0x1a (048003b2)         <br />048003ad e8862a895f&#160;&#160;&#160;&#160;&#160; call&#160;&#160;&#160; coreclr!JIT_DbgIsJustMyCode (64092e38)         <br />0:005&gt; !ip2md <strong>04800398</strong>         <br />MethodDesc:&#160; <strong>04633a30</strong>         <br />Method Name: SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)         <br />Class:&#160;&#160;&#160;&#160;&#160;&#160; 0463196c         <br />MethodTable: 04633a6c         <br />mdToken:&#160;&#160;&#160;&#160; 06000008         <br />Module:&#160;&#160;&#160;&#160;&#160; 046333b4         <br />IsJitted:&#160;&#160;&#160; yes         <br />CodeAddr:&#160;&#160;&#160; <strong>04800398</strong>         <br />0:005&gt; !dumpil <strong>04633a30</strong>         <br />ilAddr = 047e03fe         <br />IL_0000: nop         <br />IL_0001: ret </span></p> </blockquote> 
<p>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.</p>
<h4>Conclusion</h4>
<p>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. Thanks!</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8abd47dc-1357-4ada-8e2a-eaaea1c89631" class="wlWriterSmartContent">Technorati Tags: <a href="http://technorati.com/tags/.NET" rel="tag">.NET</a>,<a href="http://technorati.com/tags/Silverlight" rel="tag">Silverlight</a>,<a href="http://technorati.com/tags/Debug" rel="tag">Debug</a>,<a href="http://technorati.com/tags/SOS" rel="tag">SOS</a>,<a href="http://technorati.com/tags/CLR" rel="tag">CLR</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ningzhang.org/2008/12/19/silverlight-debugging-with-windbg-and-sos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight Debugging with Visual Studio</title>
		<link>http://www.ningzhang.org/2008/12/18/silverlight-debugging-with-visual-studio/</link>
		<comments>http://www.ningzhang.org/2008/12/18/silverlight-debugging-with-visual-studio/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 13:49:00 +0000</pubDate>
		<dc:creator>Ning Zhang</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SOS]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[WinDBG]]></category>

		<guid isPermaLink="false">http://nztst.wordpress.com/2008/12/18/silverlight-debugging-with-visual-studio/</guid>
		<description><![CDATA[Introduction Debugging is an important part of software development, so knowledge of debugging tools and techniques are very important for developer productivity and software quality. Even though information about debugging are readily available on MSDN, various blogs and sites, it seems that many developers are too busy to dig out those information or get familiar [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Debugging is an important part of software development, so knowledge of debugging tools and techniques are very important for developer productivity and software quality. Even though information about debugging are readily available on MSDN, various blogs and sites, it seems that many developers are too busy to dig out those information or get familiar with various tools and techniques, so they miss out big on the productivity and quality gains they could have with those debugging tools and techniques. I thought it may be helpful to pull those information together. It ended up too big for a blog post, so I trimmed it down to be an overview of just Visual Studio and WinDbg (and links to references for more information), and broke it into two posts. I use the following simplest Silverlight application for debugging, so I can focus on debugging tools and techniques, instead of using real world examples that may require too much irrelevant/confidential knowledge or take too much effort to explain.</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Sample Silverlight Application for Debugging" border="0" alt="Sample Silverlight Application for Debugging" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs1_thumb.png" width="584" height="438" /></a> </p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs2.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Sample Silverlight Application for Debugging" border="0" alt="Sample Silverlight Application for Debugging" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs2_thumb.png" width="236" height="244" /></a>&#160;</p>
<h3>Visual Studio Debug Windows</h3>
<p>Visual Studio is a power tool and the most convenient for debugging managed applications (both .NET and Silverlight). Its GUI makes common debugging operations like breakpoint, backtracked, data manipulation, execution control etc super easy and straightforward. It is highly recommended that you check <a href="http://msdn.microsoft.com/en-us/library/sc65sadd.aspx">Debugging in Visual Studio</a> on MSDN frequently, especially the following sections:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/k0k771bt.aspx">Debugger Roadmap</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/d0b8xh0y.aspx">Debugger Settings and Preparation</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/awtaffxb.aspx">Debugging Managed Code</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/cwzf7x3e.aspx">Debugging User Interface Reference</a> </li>
</ul>
<p>Every time I read those links or any thing else on MSDN, I learn something new.</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs3.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Visual Studio Debug Windows" border="0" alt="Visual Studio Debug Windows" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs3_thumb.png" width="584" height="438" /></a> </p>
<h4>Immediate Window</h4>
<p>Besides debug windows, if you want to use commands or prefer command line interface (especially those who are more accustomed to native coding and/or low level debugging with tools ntsd or gdb), you can use Immediate and Command windows.</p>
<p>You can examine/change objects and their properties and call methods from Immediate Window, and with the convenience of <a href="http://en.wikipedia.org/wiki/IntelliSense">IntelliSense</a> and tool:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs4.png" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Immediate Window" border="0" alt="Immediate Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs4_thumb.png" width="584" height="438" /></a> </p>
<p>Immediate window has an subset of ntsd commands, and more importantly, can be used to load SOS (I will discuss SOS with WinDbg in next post). </p>
<p>&#160;<a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sldbgvs5" border="0" alt="sldbgvs5" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs5_thumb.png" width="299" height="309" /></a> </p>
<p>Unfortunately none of above commands works while debugging Silverlight, because Silverlight project settings doesn&#8217;t have the option to turn on native debugging. If someone knows how to debug Silverlight with SOS and Visual Studio, please let me know.</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs6.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Immediate Window" border="0" alt="Immediate Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs6_thumb.png" width="584" height="438" /></a> </p>
<p>This limitation can be mitigated to some extend by using Visual Studio commands. You can either use those commands within Immediate Window with &gt;: </p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs7.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Visual Studio Commands in Immediate Window" border="0" alt="Visual Studio Commands in Immediate Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs7_thumb.png" width="584" height="438" /></a> </p>
<p>or switch to Command Window from Immediate Window with &gt;cmd:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs8.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Immediate Window" border="0" alt="Immediate Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs8_thumb.png" width="584" height="438" /></a> </p>
<h4>Command Window</h4>
<p>Command Window provides a command line interface for more than just debugging. It is the CUI of Visual Studio, and with intellisense:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs9.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Command Window" border="0" alt="Command Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs9_thumb.png" width="584" height="438" /></a>     <br /><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs10.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Command Window" border="0" alt="Command Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs10_thumb.png" width="584" height="438" /></a>&#160;</p>
<p>And you can switch from Command Window to Immediate Window with rimmed command.</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs11.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Command Window" border="0" alt="Command Window" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs11_thumb.png" width="584" height="438" /></a> </p>
<p>You can read more about <a href="http://msdn.microsoft.com/en-us/library/c785s0kz.aspx">Command Window</a> on MSDN, especially:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx">Predefined Visual Studio Command Aliases</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/c338aexd.aspx">Visual Studio Commands</a> </li>
</ul>
<h3>Debug With .NET Framework Source Code</h3>
<p>It is pretty common that sometimes some API&#8217;s you use don&#8217;t work as expected/assumed/documented, so being able to debug the source code of those API&#8217;s is very helpful in identifying/fixing issues. The biggest API set is .NET framework. <a href="http://weblogs.asp.net/scottgu/default.aspx" target="_blank">Scott Guthrie</a> has a blog post <a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" target="_blank">.NET Framework Library Source Code now available</a> earlier this year, and <a href="http://blogs.msdn.com/sburke/default.aspx" target="_blank">Shawn Burke</a>, my boss, has a post with detailed instruction and FAQ/troubleshooting on <a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx" target="_blank">Configure Visual Studio to Debug .NET Framework Source Code</a>.</p>
<p>I tried with Silverlight:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs12.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Configure Visual Studio to Debug .NET Framework Source Code" border="0" alt="Configure Visual Studio to Debug .NET Framework Source Code" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs12_thumb.png" width="584" height="336" /></a> </p>
<p>but it seems Silverlight source isn&#8217;t available yet:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs13.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="No Silverlight Source Code" border="0" alt="No Silverlight Source Code" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs13_thumb.png" width="584" height="439" /></a> </p>
<p>Before Silverlight source becomes available, you can use the great tool <a href="http://en.wikipedia.org/wiki/.NET_Reflector">.NET Reflector</a>, originally written by <a href="http://blog.lutzroeder.com/">Lutz Redder</a>, now owned by <a href="http://www.red-gate.com/products/reflector/">RedGate</a>, to browse Silverlight source code:</p>
<p><a href="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs14.png" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title=".NET Reflector" border="0" alt=".NET Reflector" src="http://www.ningzhang.org/wp-content/uploads/2009/12/sldbgvs14_thumb.png" width="584" height="426" /></a> </p>
<h3>Conclusion</h3>
<p>As we can see, Visual Studio is the best tool for debugging managed applications, and it has lots of advanced features that may not be very well known, like the commands in Immediate and Command windows. Not all features are available for Silverlight debugging, particularly SOS and Silverlight source code. I hope SOS be part of Visual Studio, and all NTSD (and most extension) commands available in Visual Studio.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7acdf889-df1c-4ad1-870e-3f669a88c5dd" class="wlWriterSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Silverlight" rel="tag">Silverlight</a>,<a href="http://technorati.com/tags/Debug" rel="tag">Debug</a>,<a href="http://technorati.com/tags/Visual%20Studio" rel="tag">Visual Studio</a>,<a href="http://technorati.com/tags/.NET" rel="tag">.NET</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ningzhang.org/2008/12/18/silverlight-debugging-with-visual-studio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

