<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>bits and bytes</title>
	
	<link>http://ntcoder.com/bab</link>
	<description>C, C++, VC++, C#, VB.net, Debugging, Dump analysis, Windbg, and Visual Studio related stuff</description>
	<lastBuildDate>Thu, 02 May 2013 18:47:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wordpress/svRz" /><feedburner:info uri="wordpress/svrz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item>
		<title>Difference between a class and struct in .net</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/vuAxtepGJAs/</link>
		<comments>http://ntcoder.com/bab/2013/05/02/difference-between-a-class-and-struct-in-net/#comments</comments>
		<pubDate>Thu, 02 May 2013 18:16:28 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[structs]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2435</guid>
		<description><![CDATA[Thought I will share some interesting differences between a .net class and a struct. Class Struct Allocated on the heap. Allocated on the stack. They are value types and don’t require heap allocation. A variable of a class type stores a reference to a dynamically allocated object. A variable of a struct type directly stores <a href='http://ntcoder.com/bab/2013/05/02/difference-between-a-class-and-struct-in-net/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Thought I will share some interesting differences between a .net class and a struct.</p>
<table cellspacing="2" cellpadding="2" width="400" border="5">
<tbody>
<tr>
<td valign="top" width="200"><strong>Class</strong></td>
<td valign="top" width="200"><strong>Struct</strong></td>
</tr>
<tr>
<td valign="top" width="200">Allocated on the heap.</td>
<td valign="top" width="200">Allocated on the stack. They are value types and don’t require heap allocation.</td>
</tr>
<tr>
<td valign="top" width="200">A variable of a class type stores a reference to a dynamically allocated object.</td>
<td valign="top" width="200">A variable of a struct type directly stores the data of the struct.</td>
</tr>
<tr>
<td valign="top" width="200">Supports user-specified inheritance.</td>
<td valign="top" width="200">Does not support user-specified inheritance and all struct types implicitly inherit from type object.</td>
</tr>
<tr>
<td valign="top" width="200">An array of, class Point instances of, size 100 implies 101 separate objects are instantiated. One for the array and one each for the 100 elements.</td>
<td valign="top" width="200">An array, of struct Point instances, of size 100 implies only one object i.e. the array is instantiated and the struct Point instances are stored inline in the array.</td>
</tr>
<tr>
<td valign="top" width="200">Dynamic allocation done via ‘new’ call.</td>
<td valign="top" width="200">Struct constructors are invoked with the new operator but that does not imply that memory is being allocated. Instead of dynamically allocating an object and returning a reference to it, a struct constructor simply returns the struct value itself (typically in a temporary location on the stack), and this value is then copied as necessary.</td>
</tr>
<tr>
<td valign="top" width="200">With classes, it is possible for two variables to reference the same object and thus possible for operations on one variable to affect the object referenced by the other variable.</td>
<td valign="top" width="200">With structs, the variables each have their own copy of the data, and it is not possible for operations on one to affect the other. For example, the output produced by the following code fragment depends on whether Point is a class or a struct.</td>
</tr>
<tr>
<td valign="top" width="200">Classes are kind of faster as only their references are copied around.</td>
<td valign="top" width="200">Structs are copied by value unless we specify ref, out parameters hence the copying overhead is there.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Structs are particularly useful for small data structures that have value semantics. Complex numbers, points in a coordinate system, or key-value pairs in a dictionary are all good examples of structs. <u>The use of structs rather than classes for small data structures can make a large difference in the number of memory allocations an application performs.</u></p>
<p>These differences are picked up from the C# 4.0 language specification.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2013%2F05%2F02%2Fdifference-between-a-class-and-struct-in-net%2F&amp;title=Difference%20between%20a%20class%20and%20struct%20in%20.net" id="wpa2a_2"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/vuAxtepGJAs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2013/05/02/difference-between-a-class-and-struct-in-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2013/05/02/difference-between-a-class-and-struct-in-net/</feedburner:origLink></item>
		<item>
		<title>C# 4.0 Language Specification</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/Yx2deJS5JPA/</link>
		<comments>http://ntcoder.com/bab/2013/04/30/c-4-0-language-specification/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 10:06:10 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2428</guid>
		<description><![CDATA[Interested in reading through Microsoft C#.net 4.0 language specification? Here&#8217;s the download link (word/htm format)&#8230; http://www.microsoft.com/en-us/download/details.aspx?id=7029]]></description>
				<content:encoded><![CDATA[<p>Interested in reading through Microsoft C#.net 4.0 language specification? Here&#8217;s the download link (word/htm format)&#8230;</p>
<p><a href="http://www.microsoft.com/en-us/download/details.aspx?id=7029">http://www.microsoft.com/en-us/download/details.aspx?id=7029</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2013%2F04%2F30%2Fc-4-0-language-specification%2F&amp;title=C%23%204.0%20Language%20Specification" id="wpa2a_4"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/Yx2deJS5JPA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2013/04/30/c-4-0-language-specification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2013/04/30/c-4-0-language-specification/</feedburner:origLink></item>
		<item>
		<title>Turning off filename and line number display in the debugger</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/wLBhzwaqcXE/</link>
		<comments>http://ntcoder.com/bab/2013/04/27/turning-off-filename-and-line-number-display-in-the-debugger/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 12:37:50 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[WinDbg]]></category>
		<category><![CDATA[.lines]]></category>
		<category><![CDATA[private symbols]]></category>
		<category><![CDATA[public symbols]]></category>
		<category><![CDATA[Symbols]]></category>
		<category><![CDATA[symopt]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2423</guid>
		<description><![CDATA[Filename and line number information is stored inside private symbols (.pdb file). So if private symbols are available the debugger will try figuring out the line number information. Note: public symbols doesn’t have line number information. So the question I’ve heard people new to windbg ask is how to turn off line number display. What’s <a href='http://ntcoder.com/bab/2013/04/27/turning-off-filename-and-line-number-display-in-the-debugger/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Filename and line number information is stored inside private symbols (.pdb file). So if private symbols are available the debugger will try figuring out the line number information. Note: public symbols doesn’t have line number information.</p>
<p>So the question I’ve heard people new to windbg ask is how to turn off line number display. What’s the command for this. What I normally do is and the easiest of all is the ‘.lines’ command. This is a toggle command, next time you execute .lines, the command will turn ‘on’ line number information.</p>
<p>Another option is to use .symopt command:<br /><a title="http://msdn.microsoft.com/en-in/library/windows/hardware/ff558827(v=vs.85).aspx" href="http://msdn.microsoft.com/en-in/library/windows/hardware/ff558827(v=vs.85).aspx">http://msdn.microsoft.com/en-in/library/windows/hardware/ff558827(v=vs.85).aspx</a></p>
<p>The symbol option of interest to us is: SYMOPT_LOAD_LINES. Following is the MSDN description of this item.</p>
<p><em>This symbol option allows line number information to be read from source files. This option must be on for source debugging to work correctly.</em>
<p><em>In KD and CDB, this option is off by default; in WinDbg, this option is on by default. In CDB and KD, the -lines command-line option will turn this option on. Once the debugger is running, it can be turned on or off by using <strong>.symopt+0&#215;10</strong> or <strong>.symopt-0&#215;10</strong>, respectively. It can also be toggled on and off by using the </em><a href="http://msdn.microsoft.com/en-in/library/windows/hardware/ff563952(v=vs.85).aspx"><strong><em>.lines (Toggle Source Line Support)</em></strong></a><em> command.</em>
<p><em>This option is on by default in DBH. Once DBH is running, it can be turned on or off by using symopt +10 or symopt -10, respectively.</em></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2013%2F04%2F27%2Fturning-off-filename-and-line-number-display-in-the-debugger%2F&amp;title=Turning%20off%20filename%20and%20line%20number%20display%20in%20the%20debugger" id="wpa2a_6"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/wLBhzwaqcXE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2013/04/27/turning-off-filename-and-line-number-display-in-the-debugger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2013/04/27/turning-off-filename-and-line-number-display-in-the-debugger/</feedburner:origLink></item>
		<item>
		<title>NonInvasive debugging</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/u9cdFrj6XwA/</link>
		<comments>http://ntcoder.com/bab/2013/04/27/noninvasive-debugging/#comments</comments>
		<pubDate>Sat, 27 Apr 2013 12:14:09 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[WinDbg]]></category>
		<category><![CDATA[Debugging application]]></category>
		<category><![CDATA[NonInvasive Debugging]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2422</guid>
		<description><![CDATA[Non-Invasive debugging is a useful technique to debug hung processes. The debugger suspends all threads in the process and has access to all threads, memory and register’s of the process. To do non-invasive debugging via windbg/cdb check this link out: http://msdn.microsoft.com/en-in/library/windows/hardware/ff552274(v=vs.85).aspx To do this via WinDbg UI, press F6 or File-&#62;Attach to a Process… While <a href='http://ntcoder.com/bab/2013/04/27/noninvasive-debugging/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Non-Invasive debugging is a useful technique to debug hung processes. The debugger suspends all threads in the process and has access to all threads, memory and register’s of the process.</p>
<p>To do non-invasive debugging via windbg/cdb check this link out: <br /><a title="http://msdn.microsoft.com/en-in/library/windows/hardware/ff552274(v=vs.85).aspx" href="http://msdn.microsoft.com/en-in/library/windows/hardware/ff552274(v=vs.85).aspx">http://msdn.microsoft.com/en-in/library/windows/hardware/ff552274(v=vs.85).aspx</a></p>
<p>To do this via WinDbg UI, press F6 or File-&gt;Attach to a Process…</p>
<p><a href="http://ntcoder.com/bab/wp-content/uploads/2013/04/image.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="http://ntcoder.com/bab/wp-content/uploads/2013/04/image_thumb.png" width="244" height="147"></a> </p>
<p>While non-invasive debugging is in progress we also can have another instance of the debugger attached to the same process. This proves that for non-invasive debugging the debugger is not attached to the process reason being by default on Windows only one debugger can be attached at any time to a process. Also while debugging non-invasively common windbg commands like ‘g’ won’t work because we don’t have a debugger to the process&nbsp; which can instruct the process to resume execution. </p>
<p>As written already: for non-invasive debugging the debugger suspends all the threads in the process so this also means that we can resume execution of these threads too. The command to do this is as follows…</p>
<p>0:000&gt; ~*m</p>
<p>~m resumes a thread while ~n suspends a thread. If we don’t resume the threads we won’t see the process UI as the UI thread is also in a suspended state.</p>
<p>Now with two debuggers monitoring the process we can view the process’ memory via the non-invasive debugger as well. For e.g. when you set a breakpoint via the second debugger&nbsp; (attached invasively) its interesting to see how the function code is modified by the debugger to get the breakpoint to work, see below e.g.</p>
<p>We’ve set a breakpoint on ntdll!ntopenfile. This is how the code looks when broken into by the debugger…</p>
<p>0:001&gt; uf ntdll!ntopenfile<br />ntdll!ZwOpenFile:<br />000007f9`25972f10 4c8bd1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; r10,rcx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;&lt;&lt;&#8212;- This three byte instruction is replaced, see below<br />000007f9`25972f13 b831000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,31h<br />000007f9`25972f18 0f05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syscall<br />000007f9`25972f1a c3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret
<p>But during execution of the process (after setting breakpoint) and checking the assembler code via non-invasive debugger we see something different…</p>
<p>0:000&gt; uf ntdll!ntopenfile<br />ntdll!ZwOpenFile:<br />000007f9`25972f10 cc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; &lt;&lt;&lt;&lt;&#8212;&#8212;- Single byte instruction cc, and followed by <br />000007f9`25972f11 8bd1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; edx,ecx &lt;&lt;&#8212; 8bd1: remaining two bytes of the above three bytes instruction<br />000007f9`25972f13 b831000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; eax,31h<br />000007f9`25972f18 0f05&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syscall<br />000007f9`25972f1a c3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ret
<p>In effect the original three byte instruction (4c8bd1) is replaced by (cc8bd1). The only change: 4c –&gt; cc. cc evaluates to int 3. When the breakpoint is hit (or when we press Ctrl + Break) the breakpoint instruction is replaced by original op code i.e. 4c8bd1.
<p>We could figure this out via the non-Invasive debugger. If a process is hung we can in effect go through the call stacks and find out potential hang scenarios, for e.g. a process waiting on a network drive.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2013%2F04%2F27%2Fnoninvasive-debugging%2F&amp;title=NonInvasive%20debugging" id="wpa2a_8"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/u9cdFrj6XwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2013/04/27/noninvasive-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2013/04/27/noninvasive-debugging/</feedburner:origLink></item>
		<item>
		<title>Hidden VC++ compiler switches: /showIncludes</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/LFjjJLd4Oic/</link>
		<comments>http://ntcoder.com/bab/2013/01/09/hidden-vc-compiler-switches-showincludes/#comments</comments>
		<pubDate>Tue, 08 Jan 2013 20:34:12 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[C++, VC++]]></category>
		<category><![CDATA[Visual C++ Compiler]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[Hidden compiler options]]></category>
		<category><![CDATA[VC++ Compiler option]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2417</guid>
		<description><![CDATA[This hidden Visual C++ compiler switch will print out the full path of files included via #includes. You add this option likewise… Sample output… 1&#62;&#160; Note: including file:&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxwin.h 1&#62;&#160; Note: including file:&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h 1&#62;&#160; Note: including file:&#160;&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\new.h 1&#62;&#160; <a href='http://ntcoder.com/bab/2013/01/09/hidden-vc-compiler-switches-showincludes/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>This hidden Visual C++ compiler switch will print out the full path of files included via #includes. You add this option likewise…</p>
<p><a href="http://ntcoder.com/bab/wp-content/uploads/2013/01/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://ntcoder.com/bab/wp-content/uploads/2013/01/image_thumb.png" width="244" height="209" /></a></p>
<p>Sample output…</p>
<p>1&gt;&#160; Note: including file:&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxwin.h   <br />1&gt;&#160; Note: including file:&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h    <br />1&gt;&#160; Note: including file:&#160;&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\new.h    <br />1&gt;&#160; Note: including file:&#160;&#160;&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\crtdefs.h    <br />1&gt;&#160; Note: including file:&#160;&#160;&#160;&#160;&#160; C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h</p>
<p>….</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2013%2F01%2F09%2Fhidden-vc-compiler-switches-showincludes%2F&amp;title=Hidden%20VC%2B%2B%20compiler%20switches%3A%20%2FshowIncludes" id="wpa2a_10"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/LFjjJLd4Oic" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2013/01/09/hidden-vc-compiler-switches-showincludes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2013/01/09/hidden-vc-compiler-switches-showincludes/</feedburner:origLink></item>
		<item>
		<title>windbg: kf command</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/0yIGGsTXmZ8/</link>
		<comments>http://ntcoder.com/bab/2012/04/10/windbg-kf-command/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 00:20:26 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[CDB]]></category>
		<category><![CDATA[kf]]></category>
		<category><![CDATA[ntsd]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2407</guid>
		<description><![CDATA[kf is a useful command to find out stack memory taken by a frame. See below… I have three functions which looks like this… #pragma auto_inline(off) void TestStack2() { &#160;&#160;&#160;&#160;&#160;&#160; printf(&#34;hello&#34;); &#160;&#160;&#160;&#160;&#160;&#160; return; } void TestStack1() { &#160;&#160;&#160;&#160;&#160;&#160; TestStack2(); &#160;&#160;&#160;&#160;&#160;&#160; char bytes[0x190] = {9}; &#160;&#160;&#160;&#160;&#160;&#160; printf(&#34;hello: %s&#34;, bytes); } void TestStack() { &#160;&#160;&#160;&#160;&#160;&#160; TestStack1(); &#160;&#160;&#160;&#160;&#160;&#160; <a href='http://ntcoder.com/bab/2012/04/10/windbg-kf-command/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>kf is a useful command to find out stack memory taken by a frame. See below…   <br />I have three functions which looks like this…</p>
<p><font face="Courier New">#pragma auto_inline(off)     <br />void TestStack2()      <br />{      <br />&#160;&#160;&#160;&#160;&#160;&#160; printf(&quot;hello&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160; return;      <br />}      <br />void TestStack1()      <br />{      <br />&#160;&#160;&#160;&#160;&#160;&#160; TestStack2();      <br />&#160;&#160;&#160;&#160;&#160;&#160; char bytes[<font style="background-color: #ffff00">0x190</font>] = {9};      <br />&#160;&#160;&#160;&#160;&#160;&#160; printf(&quot;hello: %s&quot;, bytes);      <br />}      <br />void TestStack()      <br />{      <br />&#160;&#160;&#160;&#160;&#160;&#160; TestStack1();      <br />&#160;&#160;&#160;&#160;&#160;&#160; char bytes[<font style="background-color: #ffff00">0x90</font>] = {9};      <br />&#160;&#160;&#160;&#160;&#160;&#160; printf(&quot;hello: %s&quot;, bytes);      <br />}</font></p>
<p><font face="Courier New">// Check out the frame sizes…</font>    <br /><font face="Courier New"><font size="2">&#160; </font>Memory</font>&#160; <font size="2" face="Courier New">ChildEBP RetAddr&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0024f000 00291578 TestMFC1!TestStack2+0&#215;5       <br />&#160;&#160;&#160;&#160;&#160; <font style="background-color: #ffff00">19c</font> 0024f19c 002915d8 TestMFC1!TestStack1+0&#215;18      <br />&#160;&#160;&#160;&#160;&#160;&#160; <font style="background-color: #ffff00">9c</font> 0024f238 002916ea TestMFC1!TestStack+0&#215;18       <br />&#160;&#160;&#160;&#160;&#160;&#160; 28 0024f260 7856f282 TestMFC1!CTestMFC1Dlg::OnInitDialog+0xca       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8 0024f268 752c62fa mfc100!AfxDlgProc+0&#215;31       <br />&#160;&#160;&#160;&#160;&#160;&#160; 2c 0024f294 752ef9df USER32!InternalCallWinProc+0&#215;23       <br />&#160;&#160;&#160;&#160;&#160;&#160; 7c 0024f310 752ef784 USER32!UserCallDlgProcCheckWow+0xd7       <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;snip…&gt;</font></p>
<p>Alternatively we can take difference of child ebp and current esp to know frame size.   </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2012%2F04%2F10%2Fwindbg-kf-command%2F&amp;title=windbg%3A%20kf%20command" id="wpa2a_12"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/0yIGGsTXmZ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2012/04/10/windbg-kf-command/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2012/04/10/windbg-kf-command/</feedburner:origLink></item>
		<item>
		<title>How to force symbol loading in WinDbg</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/nMOEY5ZH598/</link>
		<comments>http://ntcoder.com/bab/2012/03/06/how-to-force-symbol-loading-in-windbg/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 23:33:46 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[pdb]]></category>
		<category><![CDATA[Symbols]]></category>
		<category><![CDATA[symopt]]></category>
		<category><![CDATA[SYMOPT_LOAD_ANYTHING]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2405</guid>
		<description><![CDATA[Sometimes we could have a dump which does not load .pdb files even though they are present in the dump folder. The reason for the load failure is not necessarily every time a code change but could be just a rebuild of the source code. In such cases if you force load the .pdb file <a href='http://ntcoder.com/bab/2012/03/06/how-to-force-symbol-loading-in-windbg/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Sometimes we could have a dump which does not load .pdb files even though they are present in the dump folder. The reason for the load failure is not necessarily every time a code change but could be just a rebuild of the source code. In such cases if you force load the .pdb file you should get a call stack that makes sense but you got to be good at API&#8217;s and libraries to make sure the stack makes sense. So until you get a proper .pdb file you can force load a .pdb file and work on the dump.   <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    <br />Remember: Always insist on correct pdb file.    <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-    <br />So the command to enable this feature is: &#8216;.symopt&#8217;. Lists out the current symbol loading options. On my machine this is what I get&#8230;</p>
<p><font face="Courier New">0:000&gt; .symopt     <br />Symbol options are 0&#215;30377:      <br />0&#215;00000001 &#8211; SYMOPT_CASE_INSENSITIVE      <br />0&#215;00000002 &#8211; SYMOPT_UNDNAME      <br />0&#215;00000004 &#8211; SYMOPT_DEFERRED_LOADS      <br />0&#215;00000010 &#8211; SYMOPT_LOAD_LINES      <br />0&#215;00000020 &#8211; SYMOPT_OMAP_FIND_NEAREST      <br />0&#215;00000100 &#8211; SYMOPT_NO_UNQUALIFIED_LOADS      <br />0&#215;00000200 &#8211; SYMOPT_FAIL_CRITICAL_ERRORS      <br />0&#215;00010000 &#8211; SYMOPT_AUTO_PUBLICS      <br />0&#215;00020000 &#8211; SYMOPT_NO_IMAGE_SEARCH</font></p>
<p>These flags determine how and what symbols will be loaded. These options also determine whether line number information should be loaded or not.</p>
<p>So in our debugging scenario if we want to load symbols in a loose manner, i.e., without strict mapping of .pdb with .exe we will have to enable the following option&#8230;</p>
<p><font face="Courier New">0&#215;00000040 &#8211; SYMOPT_LOAD_ANYTHING</font>&#160; </p>
<p>In windbg we do this via…    </p>
<p><font face="Courier New">0:000&gt; .symopt+ 0&#215;40     <br />Symbol options are 0&#215;30377:      <br />0&#215;00000001 &#8211; SYMOPT_CASE_INSENSITIVE      <br />0&#215;00000002 &#8211; SYMOPT_UNDNAME      <br />0&#215;00000004 &#8211; SYMOPT_DEFERRED_LOADS      <br />0&#215;00000010 &#8211; SYMOPT_LOAD_LINES      <br />0&#215;00000020 &#8211; SYMOPT_OMAP_FIND_NEAREST      <br /><font style="background-color: #ffff00">0&#215;00000040 &#8211; SYMOPT_LOAD_ANYTHING &lt;&#8212;&#8212;&#8212;&#8211; Prevents validation of .pdb file</font>      <br />0&#215;00000100 &#8211; SYMOPT_NO_UNQUALIFIED_LOADS      <br />0&#215;00000200 &#8211; SYMOPT_FAIL_CRITICAL_ERRORS      <br />0&#215;00010000 &#8211; SYMOPT_AUTO_PUBLICS      <br />0&#215;00020000 &#8211; SYMOPT_NO_IMAGE_SEARCH</font>    </p>
<p>To re-enable strict mapping between .exe and .pdb use    </p>
<p><font face="Courier New">0:000&gt; .symopt- 0&#215;40     <br />Symbol options are 0&#215;30377:      <br />0&#215;00000001 &#8211; SYMOPT_CASE_INSENSITIVE      <br />0&#215;00000002 &#8211; SYMOPT_UNDNAME      <br />0&#215;00000004 &#8211; SYMOPT_DEFERRED_LOADS      <br />0&#215;00000010 &#8211; SYMOPT_LOAD_LINES      <br />0&#215;00000020 &#8211; SYMOPT_OMAP_FIND_NEAREST      <br />0&#215;00000100 &#8211; SYMOPT_NO_UNQUALIFIED_LOADS      <br />0&#215;00000200 &#8211; SYMOPT_FAIL_CRITICAL_ERRORS      <br />0&#215;00010000 &#8211; SYMOPT_AUTO_PUBLICS      <br />0&#215;00020000 &#8211; SYMOPT_NO_IMAGE_SEARCH      <br /></font>    <br />Note the +/- in the above command. &#8216;+&#8217; enables, &#8216;-&#8217; disables.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2012%2F03%2F06%2Fhow-to-force-symbol-loading-in-windbg%2F&amp;title=How%20to%20force%20symbol%20loading%20in%20WinDbg" id="wpa2a_14"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/nMOEY5ZH598" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2012/03/06/how-to-force-symbol-loading-in-windbg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2012/03/06/how-to-force-symbol-loading-in-windbg/</feedburner:origLink></item>
		<item>
		<title>VC11 Beta is now available</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/z5yUMtAVsH0/</link>
		<comments>http://ntcoder.com/bab/2012/03/01/vc11-beta-is-now-available/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 22:07:13 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[C++, VC++]]></category>
		<category><![CDATA[Visual C++ Compiler]]></category>
		<category><![CDATA[Visual studio]]></category>
		<category><![CDATA[VC11]]></category>
		<category><![CDATA[VC11 Beta]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2403</guid>
		<description><![CDATA[What&#8217;s New: http://blogs.msdn.com/b/vcblog/archive/2012/02/29/10272778.aspx Downloads: http://www.microsoft.com/visualstudio/11/en-us/downloads]]></description>
				<content:encoded><![CDATA[<p>What&#8217;s New: <a href="http://blogs.msdn.com/b/vcblog/archive/2012/02/29/10272778.aspx">http://blogs.msdn.com/b/vcblog/archive/2012/02/29/10272778.aspx</a>    <br />Downloads: <a href="http://www.microsoft.com/visualstudio/11/en-us/downloads">http://www.microsoft.com/visualstudio/11/en-us/downloads</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2012%2F03%2F01%2Fvc11-beta-is-now-available%2F&amp;title=VC11%20Beta%20is%20now%20available" id="wpa2a_16"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/z5yUMtAVsH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2012/03/01/vc11-beta-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2012/03/01/vc11-beta-is-now-available/</feedburner:origLink></item>
		<item>
		<title>How to list out binaries for which symbol loading failed</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/h8BkCrE7kJc/</link>
		<comments>http://ntcoder.com/bab/2012/02/27/how-to-list-out-binaries-for-which-symbol-loading-failed-2/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 16:59:57 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[lme]]></category>
		<category><![CDATA[lml]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2400</guid>
		<description><![CDATA[Use &#8216;lml&#8217; to list all dlls whose symbols has been loaded/failed to load, the list will also include dlls which failed symbol loading. See sample&#8230; 0:000&#62; lml start end module name 00000000`03d90000 00000000`040e3000 Test1 T (no symbols)&#160; 00000000`77d40000 00000000`77eb3000 kernel32 (private pdb symbols) c:\sym\kernel32.pdb\F0EC676938D745549823C7204D03B07B2\kernel32.pdb 00000000`77ec0000 00000000`77ffc000 ntdll (private pdb symbols) c:\sym\ntdll.pdb\C5666A2C21444EFAA53EB4F1CFBE56D22\ntdll.pdb 00000001`55600000 00000001`55801000 Test2 (export <a href='http://ntcoder.com/bab/2012/02/27/how-to-list-out-binaries-for-which-symbol-loading-failed-2/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Use &#8216;lml&#8217; to list all dlls whose symbols has been loaded/failed to load, the list will also include dlls which failed symbol loading. See sample&#8230;</p>
<p><font face="Courier New"><font style="background-color: #4bacc6">0:000&gt; lml</font>       <br />start end module name       <br />00000000`03d90000 00000000`040e3000 Test1 T (<font style="background-color: #ffff00">no symbols</font>)&#160; <br />00000000`77d40000 00000000`77eb3000 kernel32 (private pdb symbols) c:\sym\kernel32.pdb\F0EC676938D745549823C7204D03B07B2\kernel32.pdb       <br />00000000`77ec0000 00000000`77ffc000 ntdll (private pdb symbols) c:\sym\ntdll.pdb\C5666A2C21444EFAA53EB4F1CFBE56D22\ntdll.pdb       <br />00000001`55600000 00000001`55801000 Test2 (<font style="background-color: #ffff00">export symbols</font>) Test2.dll       <br />00000001`80000000 00000001`806c2000 Test3 T (<font style="background-color: #ffff00">no symbols</font>)&#160; <br />000007ff`57040000 000007ff`57071000 iphlpapi (private pdb symbols) c:\sym\iphlpapi.pdb\487BEF7A066A4E5DB7C0230E9B8564CA2\iphlpapi.pdb       <br />000007ff`57140000 000007ff`573c5000 ole32 (private pdb symbols) c:\sym\ole32.pdb\7DDC15A822B0415CAD8C3BC2BF86C3082\ole32.pdb       <br />000007ff`77310000 000007ff`77340000 ws2_32 (private pdb symbols) c:\sym\ws2_32.pdb\89321AB9C6CD443FB74F07BA57B507452\ws2_32.pdb       <br />000007ff`7fd30000 000007ff`7fed0000 rpcrt4 (private pdb symbols) c:\sym\rpcrt4.pdb\8852BC6255D84F43A64A5FA4BE7D74162\rpcrt4.pdb       <br /></font>    <br />I&#8217;ve highlighted the dlls which failed symbol loading.</p>
<p>Use &#8216;lme&#8217; if you want to list only those dlls which failed symbol loading. See sample&#8230;    <br /><font face="Courier New"><font style="background-color: #4bacc6">0:000&gt; lme</font>       <br />start end module name       <br />00000000`03d90000 00000000`040e3000 Test1 T (<font style="background-color: #ffff00">no symbols</font>)&#160; <br />00000001`55600000 00000001`55801000 Test2 (<font style="background-color: #ffff00">export symbols</font>) Test2.dll       <br />00000001`80000000 00000001`806c2000 Test3 T (<font style="background-color: #ffff00">no symbols</font>)</font></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2012%2F02%2F27%2Fhow-to-list-out-binaries-for-which-symbol-loading-failed-2%2F&amp;title=How%20to%20list%20out%20binaries%20for%20which%20symbol%20loading%20failed" id="wpa2a_18"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/h8BkCrE7kJc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2012/02/27/how-to-list-out-binaries-for-which-symbol-loading-failed-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2012/02/27/how-to-list-out-binaries-for-which-symbol-loading-failed-2/</feedburner:origLink></item>
		<item>
		<title>How to search a range of addresses using ‘s’ command in WinDbg</title>
		<link>http://feedproxy.google.com/~r/wordpress/svRz/~3/RUrqhmv7hj8/</link>
		<comments>http://ntcoder.com/bab/2012/02/24/how-to-search-a-range-of-addresses-using-s-command-in-windbg/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 19:32:33 +0000</pubDate>
		<dc:creator>Nibu Thomas</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Searching for a string in an address range]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://ntcoder.com/bab/?p=2390</guid>
		<description><![CDATA[-&#62; Please note for demo purpose we are using current thread stack range as address range: poi(@$teb+8) poi(@$teb+4) &#60;- Search for an ascii string beginning with &#34;Rtl&#34; s -a poi(@$teb+8) poi(@$teb+4) &#34;Rtl&#34; //Output 0fd3d906 52 74 6c 47 65 74 50 72-6f 64 75 63 74 49 6e 66 RtlGetProductInf Search for a unicode string <a href='http://ntcoder.com/bab/2012/02/24/how-to-search-a-range-of-addresses-using-s-command-in-windbg/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>-&gt; Please note for demo purpose we are using current thread stack range as address range: <font style="background-color: #a5b592">poi(@$teb+8) poi(@$teb+4)</font> &lt;-</p>
<p><strong><u>Search for an ascii string beginning with &quot;Rtl&quot;</u>       <br /></strong><font style="background-color: #a5b592">s -a poi(@$teb+8) poi(@$teb+4) &quot;Rtl&quot;     <br /></font>//Output     <br /><font style="background-color: #ffff00">0fd3d906 52 74 6c 47 65 74 50 72-6f 64 75 63 74 49 6e 66 RtlGetProductInf</font></p>
<p><strong><u>Search for a unicode string &quot;AgentService&quot;</u>       <br /></strong><font style="background-color: #a5b592">s -u poi(@$teb+8) poi(@$teb+4) &quot;AgentService&quot; </font>    <br />//Output     <br /><font style="background-color: #ffff00">0fd3ed7c 0041 0067 0065 006e 0074 0053 0065 0072 A.g.e.n.t.S.e.r.      <br />0fd3edec 0041 0067 0065 006e 0074 0053 0065 0072 A.g.e.n.t.S.e.r.       <br /></font></p>
<p><strong><u>       <br />Display all ascii strings which are at least 8 in length</u>       <br /></strong><font style="background-color: #a5b592">s -[l8]sa poi(@$teb+8) poi(@$teb+4) </font>    <br />// Output     <br /><font style="background-color: #ffff00">0fd3d0d4 &quot;mscorlib.pdb&quot;      <br />0fd3d906 &quot;RtlGetProductInfo&quot;       <br /></font></p>
<p><strong><u>       <br />Display all unicode strings which are at least 58 in length</u></strong>     <br /><font style="background-color: #a5b592">s -[l58]su poi(@$teb+8) poi(@$teb+4)</font>    <br />// Output     <br /><font style="background-color: #ffff00">0fd3bc08 &quot;謬矐뻬࿓ilC:\Windows\WinSxS\x86_micr&quot;      <br />0fd3bc48 &quot;osoft.vc80.crt_1fc8b3b9a1e18e3b_&quot;       <br />0fd3bc88 &quot;8.0.50727.6195_none_d09154e04427&quot;       <br />0fd3bcc8 &quot;2b9a&quot;</font></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fntcoder.com%2Fbab%2F2012%2F02%2F24%2Fhow-to-search-a-range-of-addresses-using-s-command-in-windbg%2F&amp;title=How%20to%20search%20a%20range%20of%20addresses%20using%20%E2%80%98s%E2%80%99%20command%20in%20WinDbg" id="wpa2a_20"><img src="http://ntcoder.com/bab/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><img src="http://feeds.feedburner.com/~r/wordpress/svRz/~4/RUrqhmv7hj8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://ntcoder.com/bab/2012/02/24/how-to-search-a-range-of-addresses-using-s-command-in-windbg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://ntcoder.com/bab/2012/02/24/how-to-search-a-range-of-addresses-using-s-command-in-windbg/</feedburner:origLink></item>
	</channel>
</rss>
