<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx</link><description>Hi all, I realize that you probably haven't all had a chance to look at the Crash lab yet, considering I just published it on Friday but here is the review for it. I have to say that considering the amount of downloads for the buggy bits site I am a bit</description><dc:language>sv-SE</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7635049</link><pubDate>Tue, 12 Feb 2008 11:01:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7635049</guid><dc:creator>Lucian Bargaoanu</dc:creator><description>&lt;p&gt;I just wanted to say that the labs are great. And because of the hints is kind of easy to go through them and this is good because I'm pretty ignorant about this type of debugging. I'm sure they'll get more difficult later on.&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7638696</link><pubDate>Tue, 12 Feb 2008 13:51:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7638696</guid><dc:creator>Essam</dc:creator><description>&lt;p&gt;Tess,&lt;/p&gt;
&lt;p&gt;What about a screen cast for the lab ?&lt;/p&gt;</description></item><item><title>Link Listing - February 11, 2008</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7642367</link><pubDate>Tue, 12 Feb 2008 16:23:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7642367</guid><dc:creator>Christopher Steen</dc:creator><description>&lt;p&gt;Sharepoint Announcing the DoD 5015.2 Resource Kit for SharePoint Server 2007 [Via: sptblog ] WPF The...&lt;/p&gt;
</description></item><item><title>Link Listing - February 11, 2008</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7642368</link><pubDate>Tue, 12 Feb 2008 16:23:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7642368</guid><dc:creator>Christopher Steen</dc:creator><description>&lt;p&gt;Link Listing - February 11, 2008&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7688169</link><pubDate>Thu, 14 Feb 2008 11:16:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7688169</guid><dc:creator>Tom</dc:creator><description>&lt;p&gt;I aggree with Lucian Bargaoanu: &amp;quot;The labs are great.&amp;quot; I am also pleased wit the hint because of my ignorance with this kind of debugging.&lt;/p&gt;
&lt;p&gt;The lack of questions about the lab you notice, may be caused by the quality of the labs. So just keep on going as you are; I lik it.&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7688996</link><pubDate>Thu, 14 Feb 2008 12:19:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7688996</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;Great to hear:) &amp;nbsp;I'll post a memory lab today or tomorrow depending on if when i can get an hour or two freed up. &lt;/p&gt;
&lt;p&gt;As a teaser, the mem leak will be produced by running tinyget on 30 threads, 100 loops for links.aspx&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7689207</link><pubDate>Thu, 14 Feb 2008 12:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7689207</guid><dc:creator>baal</dc:creator><description>&lt;p&gt;“examine the disassembly ” parts is difficult for me&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7689265</link><pubDate>Thu, 14 Feb 2008 13:01:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7689265</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;agreed, I think that is a bit difficult overall... and not needed in most cases, which is why i just added it as an extra excercise. &lt;/p&gt;
&lt;p&gt;do you have any specific questions around it?&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7689374</link><pubDate>Thu, 14 Feb 2008 13:11:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7689374</guid><dc:creator>baal</dc:creator><description>&lt;p&gt;Dear, questions will come, don't worry!&lt;/p&gt;
&lt;p&gt;today i spent 8 hours to make 2 reviews articles to chinese, I have not run the code, just translate to catch up with you. i will investigate them, then ask you something.&lt;/p&gt;
&lt;p&gt;-------&lt;/p&gt;
&lt;p&gt;tired,over here&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7719882</link><pubDate>Fri, 15 Feb 2008 21:44:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7719882</guid><dc:creator>Kevin</dc:creator><description>&lt;p&gt;I'm curious, is there something you did to cause the disassembly to show that the memory contained an empty string? &amp;nbsp;I do not see the same results when disassembling. &amp;nbsp;My output does not show the (&amp;quot;&amp;quot;) with the mov instruction.&lt;/p&gt;
&lt;p&gt;01bc0f20 8bc8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; ecx,eax&lt;/p&gt;
&lt;p&gt;01bc0f22 8b158c46550b &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; edx,dword ptr ds:[0B55468Ch]&lt;/p&gt;
&lt;p&gt;01bc0f28 e8a3db7a77 &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;mscorlib_ni+0x2aead0 (7936ead0) (System.String.Equals(System.String, System.String), mdToken: 06000142)&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;
&lt;p&gt;Kevin&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7720557</link><pubDate>Fri, 15 Feb 2008 22:31:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7720557</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;interesting, no nothing special, it might be slightly different versions of sos.dll... &lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7872842</link><pubDate>Sun, 24 Feb 2008 10:13:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7872842</guid><dc:creator>charju</dc:creator><description>&lt;p&gt;A littel comments for exception object:&lt;/p&gt;
&lt;p&gt;0:018&amp;gt; kb&lt;/p&gt;
&lt;p&gt;ChildEBP RetAddr &amp;nbsp;Args to Child &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;01e9f9fc 79f97065 e0434f4d 00000001 00000001 kernel32!RaiseException+0x53&lt;/p&gt;
&lt;p&gt;01e9fa5c 7a05b941 02678b1c 00000000 00000000 mscorwks!RaiseTheExceptionInternalOnly+0x226&lt;/p&gt;
&lt;p&gt;Review the first args of the 1st line in callstack: kernel32!RaiseException+0x53, &amp;quot;e0434f3d&amp;quot;, you can also found this strange number at eventvwr log just descripbed in tess's lab2. This is a common CLR exception number.&lt;/p&gt;
&lt;p&gt;Second, the real CLR exception object is identified in the first arg of mscorwks!RaiseTheExceptionInternalOnly&lt;/p&gt;
&lt;p&gt;so, you can dumpobject to examine this exception object by !do 02678b1c or directly by !pe 02678b1c . If you type command !do, then you can found below info:&lt;/p&gt;
&lt;p&gt;790fa3e0 &amp;nbsp;40000b7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.String &amp;nbsp;0 instance 02679cc4 _exceptionMethodString&lt;/p&gt;
&lt;p&gt;we can continously !do 02679cc4 &amp;nbsp;to see more information about this exception.&lt;/p&gt;
&lt;p&gt;Thanks for tess's great post!!! I'd learned much more debugging skill and thoughts from you, thanks again!&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7885934</link><pubDate>Mon, 25 Feb 2008 04:29:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7885934</guid><dc:creator>Raymond Hung</dc:creator><description>&lt;p&gt;Thank you for all the posting. This is the best place to learn managed debugging. :)&lt;/p&gt;
&lt;p&gt;I have one question on !dso.&lt;/p&gt;
&lt;p&gt;I am getting the following&lt;/p&gt;
&lt;p&gt;0:018&amp;gt; !dso&lt;/p&gt;
&lt;p&gt;OS Thread Id: 0xb90 (18)&lt;/p&gt;
&lt;p&gt;ESP/REG &amp;nbsp;Object &amp;nbsp; Name&lt;/p&gt;
&lt;p&gt;01e9fa18 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa1c 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa64 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa78 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9facc 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fad8 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fb74 02659b0c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fb78 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fba4 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fba8 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fbb8 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fccc 025f75c0 System.CodeDom.Compiler.TempFileCollection&lt;/p&gt;
&lt;p&gt;The difference between this and the one shows in the lab is that the bottom piece. Your output shows&lt;/p&gt;
&lt;p&gt;0:020&amp;gt; !dso&lt;/p&gt;
&lt;p&gt;OS Thread Id: 0x116c (20)&lt;/p&gt;
&lt;p&gt;ESP/REG &amp;nbsp;Object &amp;nbsp; Name&lt;/p&gt;
&lt;p&gt;02a0f9f4 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0f9f8 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fa40 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fa58 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0faac 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fabc 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fb58 06f1e5e4 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fb5c 02f0bd70 System.Byte[]&lt;/p&gt;
&lt;p&gt;02a0fb78 02f0cb3c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;02a0fb7c 02f0bd70 System.Byte[]&lt;/p&gt;
&lt;p&gt;02a0fb8c 02f0bd70 System.Byte[]&lt;/p&gt;
&lt;p&gt;02a0fc58 06eb281c System.RuntimeType&lt;/p&gt;
&lt;p&gt;02a0fcb0 02efd4b0 Review &amp;lt;&amp;lt;--&lt;/p&gt;
&lt;p&gt;So in my case, I am not able to follow some piece of the lab. I am running IIS 6.0 with Win2K3 SP2.&lt;/p&gt;
&lt;p&gt;I am interested on getting the offset like the one in the lab&lt;/p&gt;
&lt;p&gt;&amp;quot;Dumping out the Review object that we found with !dso we can see that at offset 0x4 we have the member variable quote and looking at the value we can see that it is null.&amp;quot;&lt;/p&gt;
&lt;p&gt;Is there another way to get the offset?&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#7886030</link><pubDate>Mon, 25 Feb 2008 04:38:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7886030</guid><dc:creator>Raymond Hung</dc:creator><description>&lt;p&gt;Found it. Sorry, should have tried a little harder before posting the question.&lt;/p&gt;
&lt;p&gt;0:018&amp;gt; !dumpheap -mt 01f98ba4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt; Address &amp;nbsp; &amp;nbsp; &amp;nbsp; MT &amp;nbsp; &amp;nbsp; Size&lt;/p&gt;
&lt;p&gt;02644834 01f98ba4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 16 &amp;nbsp; &amp;nbsp; &lt;/p&gt;
&lt;p&gt;02644a74 01f98ba4 &amp;nbsp; &amp;nbsp; &amp;nbsp; 16 &amp;nbsp; &amp;nbsp; &lt;/p&gt;
&lt;p&gt;total 2 objects&lt;/p&gt;
&lt;p&gt;Statistics:&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;MT &amp;nbsp; &amp;nbsp;Count &amp;nbsp; &amp;nbsp;TotalSize Class Name&lt;/p&gt;
&lt;p&gt;01f98ba4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 32 Review&lt;/p&gt;
&lt;p&gt;Total 2 objects&lt;/p&gt;
&lt;p&gt;0:018&amp;gt; !do 02644834 &lt;/p&gt;
&lt;p&gt;Name: Review&lt;/p&gt;
&lt;p&gt;MethodTable: 01f98ba4&lt;/p&gt;
&lt;p&gt;EEClass: 024354ac&lt;/p&gt;
&lt;p&gt;Size: 16(0x10) bytes&lt;/p&gt;
&lt;p&gt; (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\debug1\b1d4288d\b06837fb\App_Code.jbom0q7o.dll)&lt;/p&gt;
&lt;p&gt;Fields:&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;MT &amp;nbsp; &amp;nbsp;Field &amp;nbsp; Offset &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Type VT &amp;nbsp; &amp;nbsp; Attr &amp;nbsp; &amp;nbsp;Value Name&lt;/p&gt;
&lt;p&gt;790fa3e0 &amp;nbsp;4000008 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.String &amp;nbsp;0 instance 00000000 quote&lt;/p&gt;
&lt;p&gt;790fa3e0 &amp;nbsp;4000009 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.String &amp;nbsp;0 instance 00000000 source&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8066400</link><pubDate>Thu, 06 Mar 2008 08:24:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8066400</guid><dc:creator>Eber Irigoyen</dc:creator><description>&lt;p&gt;I have the same problem as Raymond, the Review object doesn't show when I run !dso&lt;/p&gt;
&lt;p&gt;I can get to it if I run !dumpheap -stat, find it &amp;quot;manually&amp;quot;, then use !dumpheap -mt [address]&lt;/p&gt;
&lt;p&gt;but there's gotta be an easier way than that&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8067381</link><pubDate>Thu, 06 Mar 2008 09:50:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8067381</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;if you dont see the review object with !dso that probably means that you caught the dump when it was finalizing some other object, in which case you would need to run !dumpheap -stat to get any review objects on the heap. &amp;nbsp;Can you post your !dso output?&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8080181</link><pubDate>Fri, 07 Mar 2008 01:18:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8080181</guid><dc:creator>Eber Irigoyen</dc:creator><description>&lt;p&gt;is pretty much the same (other than the addresses) as the one Raymond posted&lt;/p&gt;
&lt;p&gt;0:018&amp;gt; !dso&lt;/p&gt;
&lt;p&gt;OS Thread Id: 0xb90 (18)&lt;/p&gt;
&lt;p&gt;ESP/REG &amp;nbsp;Object &amp;nbsp; Name&lt;/p&gt;
&lt;p&gt;01e9fa18 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa1c 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa64 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fa78 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9facc 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fad8 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fb74 02659b0c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fb78 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fba4 0266174c System.NullReferenceException&lt;/p&gt;
&lt;p&gt;01e9fba8 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fbb8 0266040c System.Byte[]&lt;/p&gt;
&lt;p&gt;01e9fccc 025f75c0 System.CodeDom.Compiler.TempFileCollection&lt;/p&gt;
&lt;p&gt;is there an easier way to locate a specific object though?&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8089913</link><pubDate>Fri, 07 Mar 2008 10:32:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8089913</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;I'm not sure why the review object is not showing up, it is probably gone by the time you gathered the dump. &amp;nbsp; &lt;/p&gt;
&lt;p&gt;Looking at the review object is just an additional step to verify the issue but you can verify it through looking at the exception and through looking at the code as well so getting the review object is not crucial to the issue.&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8238144</link><pubDate>Sun, 16 Mar 2008 06:55:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8238144</guid><dc:creator>KB</dc:creator><description>&lt;p&gt;Hey Tess,&lt;/p&gt;
&lt;p&gt;Another great one! &amp;nbsp;Thanks! &amp;nbsp;Is it beneficial to have a good understanding of assembly language to be proficient at this? &amp;nbsp;I'm assuming it does but wanted to get your take.&lt;/p&gt;
&lt;p&gt;And speaking of that, in the 0:020&amp;gt; !u 0FE90F24 &amp;nbsp;command, I had a tough time seeing the lines in bold type. &amp;nbsp;Tried on two different monitors. &amp;nbsp;Screen res on both is cranked to the highest setting possible. &amp;nbsp;Could be other settings I guess. &amp;nbsp;Anyway, just thought I'd mention it.&lt;/p&gt;
&lt;p&gt;Take care.&lt;/p&gt;
&lt;p&gt;KB&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8281788</link><pubDate>Mon, 17 Mar 2008 09:27:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8281788</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;Hi KB,&lt;/p&gt;
&lt;p&gt;No it is not essential to have a good understanding of assembly language to be proficient at debugging .net. &amp;nbsp;I just wanted to add it for completeness.&lt;/p&gt;
&lt;p&gt;I am not sure why the bolded lines are not showing up online. &amp;nbsp;The bolding is in the html but I can't see it online either now that you mention it... either way it is these two lines that were bolded&lt;/p&gt;
&lt;p&gt;0fe90f23 8b01 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; eax,dword ptr [ecx]&lt;/p&gt;
&lt;p&gt;0fe90f25 ff5028 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;dword ptr [eax+28h]&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Tess&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335203</link><pubDate>Tue, 25 Mar 2008 09:32:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335203</guid><dc:creator>Thyagu</dc:creator><description>&lt;p&gt;Hi Tess,&lt;/p&gt;
&lt;p&gt;This is the best blog which i could find for debugging .net code. I have a strange problem reported by a &amp;nbsp;user. The problem is that a customer application crashes at a certain point of time. When we had a look at the event viewer and the dumps and saw a Null Reference exception in our code.&lt;/p&gt;
&lt;p&gt;SP &amp;nbsp; &amp;nbsp; &amp;nbsp; IP &amp;nbsp; &amp;nbsp; &amp;nbsp; Function&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57ED38 1B1F5023 com.uni.jellybeans.CommsManager.Run()&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57ED70 793B0D1F System.Threading.ThreadHelper.ThreadStart_Context(System.Object)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57ED78 793740AB System.Threading.ExecutionContext.runTryCode(System.Object)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;00000000 00000001 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57F204 79373FF7 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57F21C 79373EDE System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;1E57F234 793B0C68 System.Threading.ThreadHelper.ThreadStart()&lt;/p&gt;
&lt;p&gt;I followed your instructions and was successful in diassembling the code. But i could not find the exact string which is causing the failure in our code. i would need your assistance on this. The following is the dso of the dump&lt;/p&gt;
&lt;p&gt;!dso &lt;/p&gt;
&lt;p&gt;OS Thread Id: 0x1dc0 (58)&lt;/p&gt;
&lt;p&gt;ESP/REG &amp;nbsp;Object &amp;nbsp; Name&lt;/p&gt;
&lt;p&gt;1e57f528 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f52c 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f574 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f58c 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f5e0 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f5f0 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f68c 04ed5b00 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f690 10ebd12c System.Byte[]&lt;/p&gt;
&lt;p&gt;1e57f6ac 10ebe164 System.NullReferenceException&lt;/p&gt;
&lt;p&gt;1e57f6b0 10ebd12c System.Byte[]&lt;/p&gt;
&lt;p&gt;1e57f6c0 10ebd12c System.Byte[]&lt;/p&gt;
&lt;p&gt;Please let me know if you need anything further to analyze&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335257</link><pubDate>Tue, 25 Mar 2008 10:20:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335257</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;Hi Thyagu,&lt;/p&gt;
&lt;p&gt;From this we can see that the app is starting a new thread and runs com.uni.jellybeans.CommsManager.Run() on it. and in there there is a null reference exception. &amp;nbsp;If that is not handled then that would definitely lead to a crash. &lt;/p&gt;
&lt;p&gt;Its hard to say anything else about what is causing the null ref just based on the stack above but you can do &lt;/p&gt;
&lt;p&gt;!u 1B1F5023 which will unassemble the code for com.uni.jellybeans.CommsManager.Run() and then locate where in the !u output that 1B1F5023 falls to get a bit more info about where you are getting the nullref. &amp;nbsp;If that doesnt help then perhaps looking at the code and adding some debug.writelines would help &lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335415</link><pubDate>Tue, 25 Mar 2008 11:57:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335415</guid><dc:creator>Thyagu</dc:creator><description>&lt;p&gt;Hi Tess,&lt;/p&gt;
&lt;p&gt;Thanks a ton for your quick response. I would like to admit that &amp;nbsp;i am an amateur in analyzing this dumps. I have pasted below the failing disassembly code. &lt;/p&gt;
&lt;p&gt;1b1f5016 8b0d3cbd9612 &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; ecx,dword ptr ds:[1296BD3Ch]&lt;/p&gt;
&lt;p&gt;1b1f501c 8b45d8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; eax,dword ptr [ebp-28h]&lt;/p&gt;
&lt;p&gt;1b1f501f 8b5844 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; ebx,dword ptr [eax+44h]&lt;/p&gt;
&lt;p&gt;1b1f5022 8b530c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; edx,dword ptr [ebx+0Ch]&lt;/p&gt;
&lt;p&gt;1b1f5025 e8c685175e &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;mscorlib_ni+0x2ad5f0 (7936d5f0) (System.String.Concat(System.String, System.String), mdToken: 060001c7)&lt;/p&gt;
&lt;p&gt;1b1f502a 50 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;push &amp;nbsp; &amp;nbsp;eax&lt;/p&gt;
&lt;p&gt;1b1f502b 8bcf &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; ecx,edi&lt;/p&gt;
&lt;p&gt;1b1f502d 8bd6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; edx,esi&lt;/p&gt;
&lt;p&gt;1b1f502f 8b01 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; eax,dword ptr [ecx]&lt;/p&gt;
&lt;p&gt;1b1f5031 ff505c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;dword ptr [eax+5Ch]&lt;/p&gt;
&lt;p&gt;1b1f5034 8d65f4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lea &amp;nbsp; &amp;nbsp; esp,[ebp-0Ch]&lt;/p&gt;
&lt;p&gt;I would be pleased if you can help me or guide me on further action.&lt;/p&gt;
&lt;p&gt;Thanks a lot for your help.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Thyagu&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335470</link><pubDate>Tue, 25 Mar 2008 12:32:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335470</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;Hi Thyagu&lt;/p&gt;
&lt;p&gt;The NullRef happens between these lines. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;1b1f5022 8b530c &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; edx,dword ptr [ebx+0Ch]&lt;/p&gt;
&lt;p&gt;1b1f5025 e8c685175e &amp;nbsp; &amp;nbsp; &amp;nbsp;call &amp;nbsp; &amp;nbsp;mscorlib_ni+0x2ad5f0 (7936d5f0) (System.String.Concat(System.String, System.String), mdToken: 060001c7)&lt;/p&gt;
&lt;p&gt;The top line is taking ebx+0xc &amp;nbsp;(probably a membervariable of some object) and stores it in a temporary register&lt;/p&gt;
&lt;p&gt;The second line calls string.concat so it is doing something along the lines of str1 = str2 + str3&lt;/p&gt;
&lt;p&gt;I would look for the line in code that concatenates strings and see if any of the strings that it concatenates may be null. &amp;nbsp;and also look at the line of code above it to see if could cause a null ref.&lt;/p&gt;
&lt;p&gt;I am not exactly sure how the code looks but looking at the disassembly we have &lt;/p&gt;
&lt;p&gt;mov &amp;nbsp; &amp;nbsp; ecx,dword ptr ds:[1296BD3Ch]&lt;/p&gt;
&lt;p&gt;=&amp;gt; ecx = whatever is stored at 0x1296BD3C &amp;nbsp;&lt;/p&gt;
&lt;p&gt;(likely some static string) &lt;/p&gt;
&lt;p&gt;mov &amp;nbsp; &amp;nbsp; eax,dword ptr [ebp-28h]&lt;/p&gt;
&lt;p&gt;=&amp;gt; eax = what is stored at ebp-0x28 &lt;/p&gt;
&lt;p&gt;(some parameter or local) &amp;nbsp;i'll call it myparam for now&lt;/p&gt;
&lt;p&gt;ebx,dword ptr [eax+44h]&lt;/p&gt;
&lt;p&gt;=&amp;gt; ebx = what is stored at eax+0x44&lt;/p&gt;
&lt;p&gt;(some membervariable of myparam) i'll call it mymembervar&lt;/p&gt;
&lt;p&gt;edx,dword ptr [ebx+0Ch]&lt;/p&gt;
&lt;p&gt;=&amp;gt; edx = ebx + 0xc&lt;/p&gt;
&lt;p&gt;(some membervar of mymembervar)&lt;/p&gt;
&lt;p&gt;so the code should look something like this&lt;/p&gt;
&lt;p&gt;str = somestring + myParam.myMemberVar.membervar&lt;/p&gt;
&lt;p&gt;and one of these is probably null&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335839</link><pubDate>Tue, 25 Mar 2008 16:54:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335839</guid><dc:creator>Thyagu</dc:creator><description>&lt;p&gt;Hi Tess,&lt;/p&gt;
&lt;p&gt;Thanks for your quick response.&lt;/p&gt;
&lt;p&gt;I spent the whole day in figuring where the failure had happened, but i was not successful. &lt;/p&gt;
&lt;p&gt;If there is any alternative way to figure out which object is responsible for the Null Reference exception, it would be helpful. &lt;/p&gt;
&lt;p&gt;FYI : This problem is not reproducible in our environment, so we can't debug the code and find out the reason.&lt;/p&gt;
&lt;p&gt;Your help will be very much appreciated.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Thyagu&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8335860</link><pubDate>Tue, 25 Mar 2008 17:03:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8335860</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;if the above didnt help then the best would be to add tracing statements as i mentioned before to print out what objects are null etc. inside that method... &lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8572203</link><pubDate>Wed, 04 Jun 2008 00:49:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8572203</guid><dc:creator>PaulG</dc:creator><description>&lt;p&gt;Hello Tess,&lt;/p&gt;
&lt;p&gt;I agree with the other folks ... nice work on these labs! &lt;/p&gt;
&lt;p&gt;I am a little late to the party as this Lab2 was posted a few months ago, but I had a question about your explanation of the assembly code.&lt;/p&gt;
&lt;p&gt;You made this comment:&lt;/p&gt;
&lt;p&gt;2. Right before the bolded line we set EAX to ptr(ESI+0x4) and it is when we use EAX that we access violate/get the nullreference exception. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Did you mean to say ECX here instead of EAX?&lt;/p&gt;
&lt;p&gt;Thanks again for sharing your knowledge.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;PaulG&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8572778</link><pubDate>Wed, 04 Jun 2008 08:47:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8572778</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;0fe90f20 8b4e04 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; ecx,dword ptr [esi+4]		&lt;/p&gt;
&lt;p&gt;0fe90f23 8b01 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mov &amp;nbsp; &amp;nbsp; eax,dword ptr [ecx]&lt;/p&gt;
&lt;p&gt;Well actually both, &amp;nbsp;first we set ecx to ptr[esi+4], and then we move the contents of this pointer to eax &lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8573469</link><pubDate>Wed, 04 Jun 2008 18:18:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8573469</guid><dc:creator>PaulG</dc:creator><description>&lt;p&gt;Thanks Tess ... that makes sense.&lt;/p&gt;
&lt;p&gt;I have another question ... I hope you don't mind.&lt;/p&gt;
&lt;p&gt;I liked how you displayed the assembly code and then used the IP to show us which line of assembly code was causing the access violation / null reference.&lt;/p&gt;
&lt;p&gt;Is there a way to point us to the line of IL that is causing the null reference?&lt;/p&gt;
&lt;p&gt;I can find the IL by printing my exception:&lt;/p&gt;
&lt;p&gt;0:016&amp;gt; !pe 03cdbb0c &lt;/p&gt;
&lt;p&gt;Exception object: 03cdbb0c&lt;/p&gt;
&lt;p&gt;Exception type: System.NullReferenceException&lt;/p&gt;
&lt;p&gt;Message: Object reference not set to an instance of an object.&lt;/p&gt;
&lt;p&gt;InnerException: &amp;lt;none&amp;gt;&lt;/p&gt;
&lt;p&gt;StackTrace (generated):&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;SP &amp;nbsp; &amp;nbsp; &amp;nbsp; IP &amp;nbsp; &amp;nbsp; &amp;nbsp; Function&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;025BF520 027A0F1C App_Code_ie7jwbrp!Review.Finalize()+0x14&lt;/p&gt;
&lt;p&gt;StackTraceString: &amp;lt;none&amp;gt;&lt;/p&gt;
&lt;p&gt;HResult: 80004003&lt;/p&gt;
&lt;p&gt;Then I use my IP to find the corresponding method desc:&lt;/p&gt;
&lt;p&gt;0:016&amp;gt; !ip2md 027A0F1C &lt;/p&gt;
&lt;p&gt;MethodDesc: 029b0ae0&lt;/p&gt;
&lt;p&gt;Method Name: Review.Finalize()&lt;/p&gt;
&lt;p&gt;Class: 025c54ac&lt;/p&gt;
&lt;p&gt;MethodTable: 029b0b0c&lt;/p&gt;
&lt;p&gt;mdToken: 06000013&lt;/p&gt;
&lt;p&gt;Module: 00ee8670&lt;/p&gt;
&lt;p&gt;IsJitted: yes&lt;/p&gt;
&lt;p&gt;m_CodeOrIL: 027a0f08&lt;/p&gt;
&lt;p&gt;And then I dump the IL for this method desc:&lt;/p&gt;
&lt;p&gt;0:016&amp;gt; !DumpIL 029b0ae0&lt;/p&gt;
&lt;p&gt;ilAddr = 025227f4&lt;/p&gt;
&lt;p&gt;.try&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0000: ldarg.0 &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0001: ldfld Review::quote&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0006: callvirt System.Object::ToString &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_000b: ldsfld System.String::Empty &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0010: call System.String::op_Inequality &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0015: brfalse.s IL_001e&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0017: ldarg.0 &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0018: ldnull &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0019: stfld Review::quote&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_001e: leave.s IL_0027&lt;/p&gt;
&lt;p&gt;} // end .try&lt;/p&gt;
&lt;p&gt;.finally&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0020: ldarg.0 &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0021: call System.Object::Finalize &lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0026: endfinally &lt;/p&gt;
&lt;p&gt;} // end .finally&lt;/p&gt;
&lt;p&gt;IL_0027: ret &lt;/p&gt;
&lt;p&gt;Because we know that we are calling ToString() on a null string we it is obvious that this line is the culprit.&lt;/p&gt;
&lt;p&gt; &amp;nbsp;IL_0006: callvirt System.Object::ToString &lt;/p&gt;
&lt;p&gt;But is there some commnad that will point us exactly to this line of IL?&lt;/p&gt;
&lt;p&gt;Cheers again,&lt;/p&gt;
&lt;p&gt;PaulG&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8574649</link><pubDate>Thu, 05 Jun 2008 09:26:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8574649</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;unfortunately there is no way (other than matching it up to the assembly) to find out which line is causing the issue&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8766917</link><pubDate>Wed, 23 Jul 2008 16:38:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8766917</guid><dc:creator>Michael L.</dc:creator><description>&lt;p&gt;In step one, regarding the application event log entry for 2003, you stated: &amp;quot;The process crashed because there was an unhandled exception on the finalizer thread when finalizing an object of type Review.&amp;quot;&lt;/p&gt;
&lt;p&gt;I'm assuming that you just know it was in the finalizer thread because you wrote it, right? Just looking at the event log entry, we can obviously tell what the exception was, but I'm missing how one would know where it occured without walking through the debugging.&lt;/p&gt;
&lt;p&gt;On that note, &amp;nbsp;do you know of a link that breaks down what the fields are in the event ID 5000 entry? I've not had any luck finding that reference...&lt;/p&gt;
&lt;p&gt;Thanks! These labs have been a big help!&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8832014</link><pubDate>Mon, 04 Aug 2008 22:54:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8832014</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;_______________________&lt;/p&gt;
&lt;p&gt;Message: Object reference not set to an instance of an object.&lt;/p&gt;
&lt;p&gt;StackTrace: &amp;nbsp; &amp;nbsp;at Review.Finalize()&lt;/p&gt;
&lt;p&gt;______________________&lt;/p&gt;
&lt;p&gt;The stack for the exception shows that it is on the finalizer i.e. in the finalize method for the review object, so that is how I know... &lt;/p&gt;
&lt;p&gt;Regarding the breakdown of the 5000 entry, what specifically are you looking for?&lt;/p&gt;
</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#8936935</link><pubDate>Tue, 09 Sep 2008 19:24:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8936935</guid><dc:creator>Michael L.</dc:creator><description>&lt;p&gt;For the 5000 entry, I'm looking for what are the P fields. &lt;/p&gt;
&lt;p&gt;So, for instance, for this entry:&lt;/p&gt;
&lt;p&gt;EventType clr20r3, P1 w3wp.exe, P2 6.0.3790.3959, P3 45d6968e, P4 app_code.wbwztx_4, P5 0.0.0.0, P6 47a81aee, P7 13, P8 0, P9 system.nullreferenceexception, P10 NIL&lt;/p&gt;
&lt;p&gt;P5 looks like an emtpy IP address. Is it? What about P10? What is Nil? What is the address that is being shows in P3?&lt;/p&gt;
&lt;p&gt;I'm not really worried about what the answers to those questions are for this specific example.. just the generic answer such as &amp;quot;P1 is the executable that generated the exception&amp;quot;. &amp;nbsp;I just haven't had any luck finding a reference for that, and was curious about it.&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#9160811</link><pubDate>Mon, 01 Dec 2008 19:37:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9160811</guid><dc:creator>Robin Sanner</dc:creator><description>&lt;p&gt;In the walkthrough you state &amp;quot;ESI is typically used to hold the this pointer&amp;quot;. &amp;nbsp;Is there a compilation somewhere of this type of information when debugging .NET applications?&lt;/p&gt;
&lt;p&gt;Also with your help I found it very easy to identify which x86 assembler instruction the exception occurred on, however determining which .NET source line or as a minimum which IL instruction in the method the exception occurred on. &amp;nbsp;I can use WinDBG to produce the assembler version of the JITed method or the IL version of the method but I need an IL version of the method interspersed with the assembler instructions so that I can correlate.&lt;/p&gt;</description></item><item><title>re: .NET Debugging Demos Lab 2: Crash - Review</title><link>http://blogs.msdn.com/tess/archive/2008/02/11/net-debugging-demos-lab-2-crash-review.aspx#9161323</link><pubDate>Mon, 01 Dec 2008 22:38:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9161323</guid><dc:creator>Tess</dc:creator><description>&lt;p&gt;Robin,&lt;/p&gt;
&lt;p&gt;The fact that ESI usually holds the this pointer is not .net specific. &amp;nbsp;I dont know off hand if there is a compilation of what registers are usually used for but the most common ones are that ESI holds this, and eax holds the return value of a function.&lt;/p&gt;
&lt;p&gt;Regarding the IL, you can run !dumpil on the method descriptor to get the il of the method.&lt;/p&gt;
</description></item></channel></rss>