<?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>ASP.NET Debugging : ASP.NET Tip</title><link>http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx</link><description>Tags: ASP.NET Tip</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>ASP.NET Tip: Understanding the caching of data in SOS</title><link>http://blogs.msdn.com/tom/archive/2008/10/08/asp-net-tip-understanding-the-caching-of-data-in-sos.aspx</link><pubDate>Wed, 08 Oct 2008 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8989502</guid><dc:creator>Tom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/tom/comments/8989502.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8989502</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8989502</wfw:comment><description>&lt;P&gt;The sos that comes with the debugger, in the clr10 directory, has a lot of additional features and speed improvements for .NET 1.x troubleshooting.&amp;nbsp; One of the main ways it does this is by caching the data that is gathered from !DumpHeap -stat.&lt;/P&gt;
&lt;P&gt;This is something important to remember if something happens where the command is run, but then something happens so that the cache isn't fully correct.&amp;nbsp; For example, if you are opening a dump on a remote share and some network issue happens, the cache will only be a partial cache.&amp;nbsp; If you try to run any commands that depend on that cache, they will only give partial output since the cache isn't complete.&lt;/P&gt;
&lt;P&gt;The only way to resolve this is to unload the debugger extension (SOS) and reload it.&amp;nbsp; Then the cache will be recreated.&lt;/P&gt;
&lt;P&gt;One other point of note along these lines.&amp;nbsp; If you are debugging a live process, it does not cache the data.&amp;nbsp; This is because normally you will run a command, let the process run some, and then run it again.&amp;nbsp; You don't want stale data when you re-run the commands.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;One side-note, if you run !DumpHeap -stat a second time against a live process, you will see an additional column of output.&amp;nbsp; This is showing you the change from the last time the command was run.&amp;nbsp; This can be helpful to quickly see how much things have changed.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8989502" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category><category domain="http://blogs.msdn.com/tom/archive/tags/SOS/default.aspx">SOS</category></item><item><title>ASP.NET Tips: Careful Use of Static's</title><link>http://blogs.msdn.com/tom/archive/2008/09/18/asp-net-tips-careful-use-of-static-s.aspx</link><pubDate>Thu, 18 Sep 2008 13:00:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8956571</guid><dc:creator>Tom</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/tom/comments/8956571.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8956571</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8956571</wfw:comment><description>&lt;p&gt;Not sure how many people realize it, but when you start dealing with multiple users access a system (in this case a web server), you have to be very careful what you store in static's (global variables).&amp;#160; This is because all the users will have access to this data and so if you create a page, you could allow them to see data that they shouldn't.&lt;/p&gt;  &lt;p&gt;The main place this comes into play is with SQL data.&amp;#160; We recommend that you cache data from the database so you don't have to query for it on each request.&amp;#160; But if that data is sensitive, then you need to make sure you do not store it in cache or some other global.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8956571" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>Improving Time-Critical Code written in C</title><link>http://blogs.msdn.com/tom/archive/2008/09/02/improving-time-critical-code-written-in-c.aspx</link><pubDate>Tue, 02 Sep 2008 13:00:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8916635</guid><dc:creator>Tom</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/tom/comments/8916635.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8916635</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8916635</wfw:comment><description>&lt;p&gt;Writing web pages is very similar to writing any other type of code.&amp;#160; You have to understand how it is going to be used and where you need to really make things run as quickly as possible.&lt;/p&gt;  &lt;p&gt;There are a number of tips on this blog already that deal with managed code and ways to optimize it.&amp;#160; But one of the things that we don't look at as often are other areas of code that we are dependant on.&amp;#160; For example, if you P/Invoke a native function, whatever it is doing, is something that you need to be aware of.&amp;#160; Because there is a lot of native functionality that is still available to us, I wanted to remind everyone of some of the tips you can use when dealing with C/C++ code.&lt;/p&gt;  &lt;p&gt;A great place to start is with: &lt;a title="http://msdn.microsoft.com/en-us/library/eye126ky.aspx" href="http://msdn.microsoft.com/en-us/library/eye126ky.aspx"&gt;Tips for Improving Time-Critical Code&lt;/a&gt;.&amp;#160; While most of these things don't apply to .NET based code, they are all very important when working with native code.&amp;#160; Another useful thing to be aware of is what the compiler can do for you.&amp;#160; For example, take a look at &lt;a title="http://msdn.microsoft.com/en-us/library/aa290055.aspx" href="http://msdn.microsoft.com/en-us/library/aa290055.aspx"&gt;Optimizing Your Code with Visual C++&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Feel free to add your own tips or pointers here.&amp;#160; I'd like to get a good collection going and then I can share that out as well.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8916635" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/Code/default.aspx">Code</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tip: Keep hidden files hidden</title><link>http://blogs.msdn.com/tom/archive/2008/08/26/asp-net-tip-keep-hidden-files-hidden.aspx</link><pubDate>Tue, 26 Aug 2008 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8893893</guid><dc:creator>Tom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/tom/comments/8893893.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8893893</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8893893</wfw:comment><description>&lt;p&gt;I have seen a few cases of this so I wanted to let everyone know.&amp;#160; If you install the FrontPage Server Extensions (FPSE) on a web server, it will install some configuration files in a directory under your web site called _vti_cnf.&amp;#160; This folder contains a bunch of files that FPSE use to update files and perform the various tasks that it needs to do.&lt;/p&gt;  &lt;p&gt;The problem comes if that _vti_cnf folder is not marked hidden.&amp;#160; If something keeps that from happening, you can get a few different errors because of it.&amp;#160; The reason is that the aspnet_compiler.exe will try to compile these files since the folder isn't hidden.&amp;#160; There is a web.config file in there that will cause an error like:&lt;/p&gt;  &lt;pre class="code"&gt;Invalid token 'Text' at root level of document.
XML document must contain a root level element.
Data at the root level is invalid. Line 1, position 1.&lt;/pre&gt;

&lt;p&gt;As long as this folder is hidden, the compiler will just skip over it and everything will be fine.&lt;/p&gt;

&lt;p&gt;So the main thing to remember is that if you install FPSE and suddenly start getting errors, checking if that folder is marked hidden is a great place to start.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8893893" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Exceptions/default.aspx">Exceptions</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tip: ASP.NET MSDN Site</title><link>http://blogs.msdn.com/tom/archive/2008/08/20/asp-net-tip-asp-net-msdn-site.aspx</link><pubDate>Wed, 20 Aug 2008 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8878710</guid><dc:creator>Tom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/tom/comments/8878710.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8878710</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8878710</wfw:comment><description>&lt;p&gt;Have you checked out the MSDN site for ASP.NET lately?&amp;#160; It is full of useful information.&amp;#160; You can find it at the &lt;a href="http://msdn.microsoft.com/en-us/asp.net/default.aspx"&gt;ASP.NET Developer Center&lt;/a&gt;.&amp;#160; My favorite things to check out are the “How Do I” videos.&amp;#160; They can be really helpful and can get you started on a specific topic.&amp;#160; Check them out, &lt;a href="http://msdn.microsoft.com/en-us/asp.net/bb498194.aspx"&gt;“How Do I” videos – ASP.NET&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ suggest checking back to that site from time to time to look for updates.&amp;#160; There are a lot of useful things that show up on that page, including some interesting blog postings and all kinds of updates around ASP.NET.&lt;/p&gt;  &lt;p&gt;Another interesting link is to the forum talking about &lt;a href="http://forums.asp.net/1127.aspx"&gt;ASP.NET Futures&lt;/a&gt;.&amp;#160; This is really cool stuff if you haven’t heard about it, stuff like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ASP.NET AJAX Extensions&lt;/li&gt;    &lt;li&gt;Dynamic Data Controls&lt;/li&gt;    &lt;li&gt;Silverlight Controls for ASP.NET&lt;/li&gt;    &lt;li&gt;ASP.NET Dynamic Language Support&lt;/li&gt;    &lt;li&gt;Search and Diagnostics Application Services&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope you find those sites helpful.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8878710" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: Loading a DLL out of the bin directory</title><link>http://blogs.msdn.com/tom/archive/2008/07/21/asp-net-tips-loading-a-dll-out-of-the-bin-directory.aspx</link><pubDate>Mon, 21 Jul 2008 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8750038</guid><dc:creator>Tom</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/tom/comments/8750038.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8750038</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8750038</wfw:comment><description>&lt;h3&gt;Question&lt;/h3&gt;  &lt;p&gt;A customer has created a web project which references a class library project.&amp;#160; When deployed to the local machine the web/classes all work fine.&amp;#160; When deployed to a ‘shared’ IIS site, the class DLLs exist in the /bin folder, but the web page generates an error:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;can’t find file “Documents and settings/….”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;when trying to access the class DLL.&lt;/p&gt;  &lt;p&gt;Is there a special setup to make the web pages look in its /bin folder?&lt;/p&gt;  &lt;h3&gt;Answer&lt;/h3&gt;  &lt;p&gt;There isn’t usually anything needed in order to make this scenario work.&amp;#160; But if it isn’t working for you, there are two choices here.&amp;#160; If you are in ASP.NET, most likely the cause is that you don’t have the following entry in the machine.config prior to 2.0 and the root web.config file (in the same folder as machine.config) for 2.0 and later:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&amp;lt;compilation&amp;gt;
  &amp;lt;assemblies&amp;gt;
    &amp;lt;add assembly=&amp;quot;*&amp;quot;/&amp;gt;
  &amp;lt;/assemblies&amp;gt;
&amp;lt;/compilation&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The other way to do this, if you aren’t using ASP.NET, is to add the bin directory to your path for the application.&amp;#160; The way this is accomplished is with the probing element:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&amp;lt;configuration&amp;gt;
  &amp;lt;runtime&amp;gt;
    &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;
      &amp;lt;probing privatePath=&amp;quot;bin;bin2&amp;quot; /&amp;gt;
    &amp;lt;/assemblyBinding&amp;gt;
  &amp;lt;/runtime&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This is documented here: &lt;a title="http://msdn.microsoft.com/en-us/library/823z9h8w.aspx" href="http://msdn.microsoft.com/en-us/library/823z9h8w.aspx"&gt;&amp;lt;probing&amp;gt; Element&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;There has been a situation where neither of these worked.&amp;#160; We are still researching that situation and I will update this post when we have another solution.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8750038" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: Using Process Explorer to help with high CPU</title><link>http://blogs.msdn.com/tom/archive/2008/06/24/asp-net-tips-using-process-explorer-to-help-with-high-cpu.aspx</link><pubDate>Tue, 24 Jun 2008 13:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8643375</guid><dc:creator>Tom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/tom/comments/8643375.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8643375</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8643375</wfw:comment><description>&lt;p&gt;I am not sure how many people are familiar with the great tools that &lt;a href="http://blogs.technet.com/markrussinovich/about.aspx"&gt;Mark&lt;/a&gt; and the &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals&lt;/a&gt; folks have created, but this is one that is a must for monitoring the performance of your machine.&amp;#160; It is called &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt;.&amp;#160; With it, you can see what is taking up your CPU time in real time as well as which process has what handles or DLL’s open. &lt;/p&gt;  &lt;p&gt;This tool can be used with ASP.NET to keep a quick eye on the performance of your web server.&amp;#160; You can add it to your startup folder so it always starts and you can watch things progress in your server and make sure things don’t get out of control.&amp;#160; For a great video on using this tool, check out: &lt;a title="The case of the Unexplained" href="http://www.microsoft.com/emea/spotlight/sessionh.aspx?videoid=722"&gt;The case of the Unexplained&lt;/a&gt;.&amp;#160; You can also check out Mark’s blog for many examples that use Process Explorer.&amp;#160; This tool has saved me a lot of time in tracking down performance issues and a lot of the time, you can use it instead of needed to attach a debugger or look at a dump.&lt;/p&gt;  &lt;p&gt;I would highly suggest watching the video or checking out Mark’s blog for more details and to see if you can apply the same things to your environment.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f06%2f24%2fasp-net-tips-using-process-explorer-to-help-with-high-cpu.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f06%2f24%2fasp-net-tips-using-process-explorer-to-help-with-high-cpu.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8643375" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+CPU/default.aspx">High CPU</category></item><item><title>ASP.NET and Performance</title><link>http://blogs.msdn.com/tom/archive/2008/06/23/asp-net-and-performance.aspx</link><pubDate>Mon, 23 Jun 2008 21:29:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8643250</guid><dc:creator>Tom</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/tom/comments/8643250.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8643250</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8643250</wfw:comment><description>&lt;p&gt;I wanted to talk about monitoring performance in ASP.NET for a bit.&amp;#160; I have already posted a few postings that talk around this issue, namely:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="ASP.NET Debugging - High Memory part 5 - Fragmentation" href="http://blogs.msdn.com/tom/archive/2008/02/18/high-memory-part-5-fragmentation.aspx"&gt;ASP.NET Debugging - High Memory part 5 – Fragmentation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Debugging - ASP.NET Tips- How to use DebugDiag to track down" href="http://blogs.msdn.com/tom/archive/2008/04/25/asp-net-tips-how-to-use-debugdiag-to-track-down-where-a-performance-problem-is-coming-from.aspx"&gt;ASP.NET Debugging - ASP.NET Tips- How to use DebugDiag to track down&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But there are some other things to keep in mind.&amp;#160; The best place to look for information on how to watch the performance of an ASP.NET Application is in the “Improving .NET Application Performance” guide on MSDN.&amp;#160; Specifically &lt;a href="http://msdn.microsoft.com/en-us/library/ms998579.aspx"&gt;Chapter 15 – Measuring .NET Application Performance&lt;/a&gt;.&amp;#160; There are a lot of other very useful pieces of information in this.&amp;#160; So I would suggest you review any Chapter that applies to your application.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; If you want to get a description of all the counters, check out: &lt;a title="Performance Counters for ASP.NET" href="http://msdn2.microsoft.com/en-us/library/fxk122b4.aspx"&gt;Performance Counters for ASP.NET&lt;/a&gt; and &lt;a title="Memory Performance Counters" href="http://msdn2.microsoft.com/en-us/library/x2tyfybc.aspx"&gt;Memory Performance Counters&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;As for how to capture the perfmon data (perfmon is the tool that we use to capture the performance information), take a look at my various posts around the different situations.&amp;#160; This goes through what counters are important in each situation:&lt;/p&gt;  &lt;p&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot" href="http://blogs.msdn.com/tom/archive/2008/05/21/asp-net-tips-what-to-gather-to-troubleshoot.aspx"&gt;ASP.NET Tips- What to gather to troubleshoot&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The main ones to keep an eye on are the memory counters (to watch if memory is staying under control or becoming unbounded) and the ones around the ThreadPool (Queuing, Request Execution Time, etc) to make sure things aren’t getting queued up or blocked in some manner.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f06%2f23%2fasp-net-and-performance.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f06%2f23%2fasp-net-and-performance.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8643250" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/Crash/default.aspx">Crash</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+Memory/default.aspx">High Memory</category><category domain="http://blogs.msdn.com/tom/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category><category domain="http://blogs.msdn.com/tom/archive/tags/Hang/default.aspx">Hang</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+CPU/default.aspx">High CPU</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot</title><link>http://blogs.msdn.com/tom/archive/2008/05/21/asp-net-tips-what-to-gather-to-troubleshoot.aspx</link><pubDate>Wed, 21 May 2008 18:38:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8528443</guid><dc:creator>Tom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/tom/comments/8528443.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8528443</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8528443</wfw:comment><description>&lt;p&gt;So now that I am done with all the individual posts, I thought I would wrap them all together.&amp;#160; So here are all of the posts that I created on gathering information when you are having a problem.&lt;/p&gt;  &lt;p&gt;Please keep in mind that these are geared towards the type of information you would be sending to Microsoft Support.&amp;#160;&amp;#160; So if you are troubleshooting something yourself, you have have some better methods, such as Tracing or Logging.&lt;/p&gt;  &lt;p&gt;So without further ado, here is the complete list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot – part 1 – High CPU or Hang" href="http://blogs.msdn.com/tom/archive/2008/05/02/asp-net-tips-what-to-gather-to-troubleshoot-part-1-high-cpu.aspx"&gt;High CPU or Hang&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot – part 2 – High Memory" href="http://blogs.msdn.com/tom/archive/2008/05/05/asp-net-tips-what-to-gather-to-troubleshoot-part-2-high-memory.aspx"&gt;High Memory&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot – part 3 – Crash" href="http://blogs.msdn.com/tom/archive/2008/05/06/asp-net-tips-what-to-gather-to-troubleshoot-part-3-crash.aspx"&gt;Crash&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot - part 3a - Crash revisited" href="http://blogs.msdn.com/tom/archive/2008/05/15/asp-net-tips-what-to-gather-to-troubleshoot-part-3a-crash-revisited.aspx"&gt;Crash revisited&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot - part 4 - Deadlocks" href="http://blogs.msdn.com/tom/archive/2008/05/14/asp-net-tips-what-to-gather-to-troubleshoot-part-4-deadlocks.aspx"&gt;Deadlocks&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot - part 5 - OutOfMemoryException" href="http://blogs.msdn.com/tom/archive/2008/05/19/asp-net-tips-what-to-gather-to-troubleshoot-part-5-outofmemoryexception.aspx"&gt;OutOfMemoryException&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="ASP.NET Tips- What to gather to troubleshoot - part 6 - Recycle due to memoryLimit" href="http://blogs.msdn.com/tom/archive/2008/05/20/asp-net-tips-what-to-gather-to-troubleshoot-part-6-recycle-due-to-memorylimit.aspx"&gt;Recycle due to memoryLimit&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope that these are useful to everyone and hope that you can put these to use.&amp;#160; If you think there is a situation that I haven’t covered, please let me know and I will add it also.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f21%2fasp-net-tips-what-to-gather-to-troubleshoot.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f21%2fasp-net-tips-what-to-gather-to-troubleshoot.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8528443" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/Crash/default.aspx">Crash</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+Memory/default.aspx">High Memory</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category><category domain="http://blogs.msdn.com/tom/archive/tags/Hang/default.aspx">Hang</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+CPU/default.aspx">High CPU</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot - part 6 - Recycle due to memoryLimit</title><link>http://blogs.msdn.com/tom/archive/2008/05/20/asp-net-tips-what-to-gather-to-troubleshoot-part-6-recycle-due-to-memorylimit.aspx</link><pubDate>Tue, 20 May 2008 19:03:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8523613</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/8523613.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8523613</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8523613</wfw:comment><description>&lt;p&gt;Here is another situation that you may come across and what to do in order to gather information about it.&lt;/p&gt;  &lt;p&gt;The following steps will configure &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;DebugDiag&lt;/a&gt; to automatically capture a memory dump of the ASPNET_WP.exe process recycling when it exceeds the memoryLimit.&amp;#160; This only applies to the ASPNET_WP.exe process, so if using w3wp.exe, this doesn't apply. The following event is logged when this occurs:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class="debug"&gt;&lt;font color="red"&gt;aspnet_wp.exe xxx was recycled because memory 
consumption exceeded 60% of available RAM&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;Before the issue occurs&lt;/h3&gt;

&lt;p&gt;A. Download DebugDiag: 
  &lt;br /&gt;====================&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;Debug Diagnostic tool&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;The default installation location for the package is C:\Program Files\DebugDiag. It can be changed. &lt;/li&gt;

  &lt;li&gt;Make sure any other monitoring and debugging tools are not running. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;B. Create a Performance Monitor log: 
  &lt;br /&gt;==================================== &lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Expand &lt;strong&gt;Performance Logs and Alerts&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Right Click on &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Choose &lt;strong&gt;New Log Settings...&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Enter a descriptive name &lt;/li&gt;

  &lt;li&gt;Note the log file location for later (or go to the &lt;strong&gt;Log Files&lt;/strong&gt; tab and change the location) &lt;/li&gt;

  &lt;li&gt;Click the &lt;strong&gt;Add&lt;/strong&gt; button &lt;/li&gt;

  &lt;li&gt;Click the &lt;strong&gt;All Counters&lt;/strong&gt; and &lt;strong&gt;All Instances&lt;/strong&gt; radio buttons &lt;/li&gt;

  &lt;li&gt;Select the following from the &lt;strong&gt;Performance Object&lt;/strong&gt; dropdown, being sure to &lt;strong&gt;Add&lt;/strong&gt; each one as you select it: 

    &lt;ul&gt;
      &lt;li&gt;Process &lt;/li&gt;

      &lt;li&gt;Thread &lt;/li&gt;

      &lt;li&gt;Processor &lt;/li&gt;

      &lt;li&gt;Memory &lt;/li&gt;

      &lt;li&gt;.NET CLR Data &lt;/li&gt;

      &lt;li&gt;.NET CLR Exceptions &lt;/li&gt;

      &lt;li&gt;.NET CLR Interop &lt;/li&gt;

      &lt;li&gt;.NET CLR Jit &lt;/li&gt;

      &lt;li&gt;.NET CLR Loading &lt;/li&gt;

      &lt;li&gt;.NET CLR LocksAndThreads &lt;/li&gt;

      &lt;li&gt;.NET CLR Memory &lt;/li&gt;

      &lt;li&gt;.NET CLR Networking &lt;/li&gt;

      &lt;li&gt;.NET CLR Remoting &lt;/li&gt;

      &lt;li&gt;.NET CLR Security &lt;/li&gt;

      &lt;li&gt;ASP.NET &lt;/li&gt;

      &lt;li&gt;ASP.NET Applications &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the ASP.NET counters, select the version that you are wanting to monitor. Ex. For 1.1 framework, select &lt;strong&gt;ASP.NET v1.1.4322&lt;/strong&gt; and &lt;strong&gt;ASP.NET Applications v1.1.4322&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Note: For more information on Performance monitor, see KB &lt;a href="http://support.microsoft.com/?id=248345"&gt;248345&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;C. Configure server for the High Memory Event 
  &lt;br /&gt;==================================&lt;/p&gt;

&lt;p&gt;Add the following registry keys. These were added to the .NET Framework so that a breakpoint exception will be thrown when the process recycles due to the above event.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre class="code"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: DebugOnHighMem
Value: 1

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: UnderDebugger
Value: 0&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;C. Configure DebugDiag 
  &lt;br /&gt;=================== &lt;/p&gt;

&lt;p&gt;Configure DebugDiag to capture the memory dump when the BreakPoint Exception is thrown and when the process stops.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Open DebugDiag &lt;/li&gt;

  &lt;li&gt;On the Rules tab, click &lt;strong&gt;Add Rule&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Crash&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;All IIS Processes&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Exception Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Exception &lt;/strong&gt;&lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Breakpoint Exception&lt;/strong&gt;, change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Breakpoint Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Breakpoint &lt;/strong&gt;&lt;/li&gt;

  &lt;li&gt;Type &lt;strong&gt;KERNEL32!ExitProcess&lt;/strong&gt; and change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click Next through the rest of the wizard &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inject LeakTrack.dll to capture native leak information:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Click the &lt;strong&gt;Processes&lt;/strong&gt; tab &lt;/li&gt;

  &lt;li&gt;Right-click the ASPNET_WP.exe process, select &lt;strong&gt;Monitor for leaks&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;After the issue occurs&lt;/h3&gt;

&lt;p&gt;The memory dump will automatically get captured.&lt;/p&gt;

&lt;p&gt;A. Stop the Performance Monitor log 
  &lt;br /&gt;=================================== &lt;/p&gt;

&lt;p&gt;In Performance Monitor:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Right click on your log that is now listed under &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Choose &lt;strong&gt;Stop Log&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f20%2fasp-net-tips-what-to-gather-to-troubleshoot-part-6-recycle-due-to-memorylimit.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f20%2fasp-net-tips-what-to-gather-to-troubleshoot-part-6-recycle-due-to-memorylimit.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8523613" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/Crash/default.aspx">Crash</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+Memory/default.aspx">High Memory</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot - part 5 - OutOfMemoryException</title><link>http://blogs.msdn.com/tom/archive/2008/05/19/asp-net-tips-what-to-gather-to-troubleshoot-part-5-outofmemoryexception.aspx</link><pubDate>Mon, 19 May 2008 17:49:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8519108</guid><dc:creator>Tom</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/tom/comments/8519108.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8519108</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8519108</wfw:comment><description>&lt;p&gt;So we already talked about what to gather when you are experiencing &lt;a href="http://blogs.msdn.com/tom/archive/2008/05/05/asp-net-tips-what-to-gather-to-troubleshoot-part-2-high-memory.aspx"&gt;high memory&lt;/a&gt;.&amp;#160; But what if you are actually getting a System.OutOfMemoryException?&amp;#160; Here is how you capture a dump at the time you are running out of memory.&lt;/p&gt;  &lt;p&gt;The following steps will configure &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;DebugDiag&lt;/a&gt; to automatically capture the memory dump when the System.OutOfMemoryException occurs.&lt;/p&gt;  &lt;h3&gt;Before the issue occurs&lt;/h3&gt;  &lt;p&gt;A. Download DebugDiag:    &lt;br /&gt;====================&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;Debug Diagnostic tool&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;The default installation location for the package is C:\Program Files\DebugDiag. It can be changed. &lt;/li&gt;    &lt;li&gt;Make sure any other monitoring and debugging tools are not running. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;B. Create a Performance Monitor log:    &lt;br /&gt;==================================== &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Expand &lt;strong&gt;Performance Logs and Alerts&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Right Click on &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Choose &lt;strong&gt;New Log Settings...&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter a descriptive name &lt;/li&gt;    &lt;li&gt;Note the log file location for later (or go to the &lt;strong&gt;Log Files&lt;/strong&gt; tab and change the location) &lt;/li&gt;    &lt;li&gt;Click the &lt;strong&gt;Add&lt;/strong&gt; button &lt;/li&gt;    &lt;li&gt;Click the &lt;strong&gt;All Counters&lt;/strong&gt; and &lt;strong&gt;All Instances&lt;/strong&gt; radio buttons &lt;/li&gt;    &lt;li&gt;Select the following from the &lt;strong&gt;Performance Object&lt;/strong&gt; dropdown, being sure to &lt;strong&gt;Add&lt;/strong&gt; each one as you select it:       &lt;ul&gt;       &lt;li&gt;Process &lt;/li&gt;        &lt;li&gt;Thread &lt;/li&gt;        &lt;li&gt;Processor &lt;/li&gt;        &lt;li&gt;Memory &lt;/li&gt;        &lt;li&gt;.NET CLR Data &lt;/li&gt;        &lt;li&gt;.NET CLR Exceptions &lt;/li&gt;        &lt;li&gt;.NET CLR Interop &lt;/li&gt;        &lt;li&gt;.NET CLR Jit &lt;/li&gt;        &lt;li&gt;.NET CLR Loading &lt;/li&gt;        &lt;li&gt;.NET CLR LocksAndThreads &lt;/li&gt;        &lt;li&gt;.NET CLR Memory &lt;/li&gt;        &lt;li&gt;.NET CLR Networking &lt;/li&gt;        &lt;li&gt;.NET CLR Remoting &lt;/li&gt;        &lt;li&gt;.NET CLR Security &lt;/li&gt;        &lt;li&gt;ASP.NET &lt;/li&gt;        &lt;li&gt;ASP.NET Applications &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;Close&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For the ASP.NET counters, select the version that you are wanting to monitor. Ex. For 1.1 framework, select &lt;strong&gt;ASP.NET v1.1.4322&lt;/strong&gt; and &lt;strong&gt;ASP.NET Applications v1.1.4322&lt;/strong&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: For more information on Performance monitor, see KB &lt;a href="http://support.microsoft.com/?id=248345"&gt;248345&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;C. Configure server to capture OutOfMemoryException    &lt;br /&gt;===========================================&lt;/p&gt;  &lt;p&gt;Add the following registry key. This was added to the .NET Framework so that a breakpoint exception will be thrown when an OutOfMemory condition occurs. This is documented in the following article:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/?id=820745"&gt;820745 Failfast occurs when you experience an &amp;quot;out of memory&amp;quot; condition&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class="code"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\
DWord: GCFailFastOnOOM
Value: 2&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;D. Configure DebugDiag 
  &lt;br /&gt;=================== &lt;/p&gt;

&lt;p&gt;Configure DebugDiag to capture the memory dump when the BreakPoint Exception is thrown and when the process stops.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Open DebugDiag &lt;/li&gt;

  &lt;li&gt;On the Rules tab, click &lt;strong&gt;Add Rule&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Crash&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;All IIS Processes&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Exception Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Exception&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Breakpoint Exception&lt;/strong&gt;, change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Breakpoint Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Breakpoint&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Type &lt;strong&gt;KERNEL32!ExitProcess&lt;/strong&gt; and change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click Next through the rest of the wizard &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Inject LeakTrack.dll to capture native leak information:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Click the &lt;strong&gt;Processes&lt;/strong&gt; tab &lt;/li&gt;

  &lt;li&gt;Right-click the ASPNET_WP.exe process (or w3wp.exe if running in IIS 6), select &lt;strong&gt;Monitor for leaks&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;After the issue occurs&lt;/h3&gt;

&lt;p&gt;The memory dump will automatically get captured when the OutOfMemoryException is thrown.&lt;/p&gt;

&lt;p&gt;A. Stop the Performance Monitor log 
  &lt;br /&gt;=================================== &lt;/p&gt;

&lt;p&gt;In Performance Monitor:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Right click on your log that is now listed under &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Choose &lt;strong&gt;Stop Log&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f19%2fasp-net-tips-what-to-gather-to-troubleshoot-part-5-outofmemoryexception.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f19%2fasp-net-tips-what-to-gather-to-troubleshoot-part-5-outofmemoryexception.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8519108" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+Memory/default.aspx">High Memory</category><category domain="http://blogs.msdn.com/tom/archive/tags/Exceptions/default.aspx">Exceptions</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot - part 3a - Crash revisited</title><link>http://blogs.msdn.com/tom/archive/2008/05/15/asp-net-tips-what-to-gather-to-troubleshoot-part-3a-crash-revisited.aspx</link><pubDate>Thu, 15 May 2008 18:11:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8508225</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/8508225.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8508225</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8508225</wfw:comment><description>&lt;p&gt;In the &lt;a href="http://blogs.msdn.com/tom/archive/2008/05/06/asp-net-tips-what-to-gather-to-troubleshoot-part-3-crash.aspx"&gt;previous post&lt;/a&gt; around capturing a dump for a crash, we were talking about using &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;DebugDiag&lt;/a&gt;.&amp;#160; But what if we can't use this tool.&amp;#160; There are various reasons for this, maybe we don't want to have it installed on the server, or maybe we are trying to capture a 64-bit process (which DebugDiag doesn't yet work against).&lt;/p&gt;  &lt;p&gt;In either of these cases, the best option is to use adplus.&amp;#160; This is a tool that comes with the debugger package.&amp;#160; But the question is, how do you capture the correct dump?&amp;#160; If you look at the help for adplus, you will notice that it has a -crash switch.&amp;#160; So you may be tempted to just attach to the process using that switch.&amp;#160; The problem is that this will most likely catch a 1st chance process shutdown dump.&amp;#160; These dumps consist of a single thread and everything else in the process is gone.&amp;#160; Often times, .NET is unloaded already.&amp;#160; A dump at this point doesn't tell us anything.&amp;#160; So we need to catch it sooner.&lt;/p&gt;  &lt;h3&gt;ADPLUS Config File&lt;/h3&gt;  &lt;p&gt;Adplus has the ability to run with all of it's settings being loaded from a config file.&amp;#160; In this case, what we want to do is catch the process with it is calling either TerminateProcess or ExitProcess.&amp;#160; At this point, nothing is shut down yet and we can see what happened.&amp;#160; So how do we set this up?&amp;#160; Well, we can use a config file.&amp;#160; So just create a text file with the following lines in it and save it as Adplus_Crash.cfg:&lt;/p&gt;  &lt;div style="overflow: scroll"&gt;   &lt;pre class="code"&gt;&amp;lt;ADPlus&amp;gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Configuring ADPlus to log, list the stack and create full dump&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; when kernel32!ExitProcess is called&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; To define an output directory uncomment the line in the Settings section&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; changing the directory to the one you want to use&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; --&amp;gt;&lt;p&gt;&amp;#160;&amp;#160; &amp;lt;Settings&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RunMode&amp;gt; CRASH &amp;lt;/RunMode&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;SympathPlus&amp;gt; SRV*c:\symbol_cache*http://msdl.microsoft.com/download/symbols;c:\symbols_os&amp;lt;/SympathPlus&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- &amp;lt;OutputDir&amp;gt; c:\Dumps &amp;lt;/OutputDir&amp;gt;&amp;#160; --&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/Settings&amp;gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- defining breakpoints --&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Breakpoints&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;NewBP&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Address&amp;gt; kernel32!ExitProcess &amp;lt;/Address&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Actions&amp;gt; Log;Stacks;FullDump&amp;#160; &amp;lt;/Actions&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ReturnAction&amp;gt; Q &amp;lt;/ReturnAction&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/NewBP&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;NewBP&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Address&amp;gt; kernel32!TerminateProcess &amp;lt;/Address&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Actions&amp;gt; Log;Stacks;FullDump&amp;#160; &amp;lt;/Actions&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ReturnAction&amp;gt; Q &amp;lt;/ReturnAction&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/NewBP&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Breakpoints&amp;gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Exceptions&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- options act on all currently defined exceptions --&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Option&amp;gt;&amp;#160; NoDumpOnFirstChance&amp;#160; &amp;lt;/Option&amp;gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Exceptions&amp;gt;
&lt;br /&gt;&amp;lt;/ADPlus&amp;gt;&lt;/p&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So how do we go about running adplus with this config file?&amp;#160; We simply run:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre class="code"&gt;adplus -c &amp;quot;c:\Adplus_Crash.cfg&amp;quot; -iis&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;That is all we need to do in order to capture the dump and get valid data.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f15%2fasp-net-tips-what-to-gather-to-troubleshoot-part-3a-crash-revisited.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f15%2fasp-net-tips-what-to-gather-to-troubleshoot-part-3a-crash-revisited.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8508225" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/Crash/default.aspx">Crash</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot - part 4 - Deadlocks</title><link>http://blogs.msdn.com/tom/archive/2008/05/14/asp-net-tips-what-to-gather-to-troubleshoot-part-4-deadlocks.aspx</link><pubDate>Wed, 14 May 2008 18:35:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8503363</guid><dc:creator>Tom</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/tom/comments/8503363.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8503363</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8503363</wfw:comment><description>&lt;p&gt;There are two ways to gather data in a Deadlock situation.&amp;#160; If you are using Windows 2003 or later (IIS 6.0 or later), then follow the steps in the KB &lt;a title="W3WP.exe" href="http://support.microsoft.com/?id=828222"&gt;828222&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are using an older version of IIS, then follow the steps below:&lt;/p&gt;  &lt;h3&gt;Before the issue occurs&lt;/h3&gt;  &lt;p&gt;A. Download DebugDiag:    &lt;br /&gt;======================&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;Debug Diagnostic tool&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;The default installation location for the package is C:\Program Files\DebugDiag. It can be changed. &lt;/li&gt;    &lt;li&gt;Make sure any other monitoring and debugging tools are not running. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;B. Create a Performance Monitor log:    &lt;br /&gt;====================================&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Expand &lt;strong&gt;Performance Logs and Alerts&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Right Click on &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Choose &lt;strong&gt;New Log Settings...&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter a descriptive name &lt;/li&gt;    &lt;li&gt;Note the log file location for later (or go to the &lt;strong&gt;Log Files&lt;/strong&gt; tab and change the location) &lt;/li&gt;    &lt;li&gt;Click the &lt;strong&gt;Add&lt;/strong&gt; button &lt;/li&gt;    &lt;li&gt;Click the &lt;strong&gt;All Counters&lt;/strong&gt; and &lt;strong&gt;All Instances&lt;/strong&gt; radio buttons &lt;/li&gt;    &lt;li&gt;Select the following from the &lt;strong&gt;Performance Object&lt;/strong&gt; dropdown, being sure to &lt;strong&gt;Add&lt;/strong&gt; each one as you select it:       &lt;ul&gt;       &lt;li&gt;Process &lt;/li&gt;        &lt;li&gt;Thread &lt;/li&gt;        &lt;li&gt;Processor &lt;/li&gt;        &lt;li&gt;Memory &lt;/li&gt;        &lt;li&gt;.NET CLR Data &lt;/li&gt;        &lt;li&gt;.NET CLR Exceptions &lt;/li&gt;        &lt;li&gt;.NET CLR Interop &lt;/li&gt;        &lt;li&gt;.NET CLR Jit &lt;/li&gt;        &lt;li&gt;.NET CLR Loading &lt;/li&gt;        &lt;li&gt;.NET CLR LocksAndThreads &lt;/li&gt;        &lt;li&gt;.NET CLR Memory &lt;/li&gt;        &lt;li&gt;.NET CLR Networking &lt;/li&gt;        &lt;li&gt;.NET CLR Remoting &lt;/li&gt;        &lt;li&gt;.NET CLR Security &lt;/li&gt;        &lt;li&gt;ASP.NET &lt;/li&gt;        &lt;li&gt;ASP.NET Applications &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;Close&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;For the ASP.NET counters, select the version that you are wanting to monitor. Ex. For 1.1 framework, select &lt;strong&gt;ASP.NET v1.1.4322&lt;/strong&gt; and &lt;strong&gt;ASP.NET Applications v1.1.4322&lt;/strong&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: For more information on Performance monitor, see KB &lt;a href="http://support.microsoft.com/?id=248345"&gt;248345&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;C. Running the 1.0 version of the framework?====================================&lt;/p&gt;  &lt;p&gt;If you are running the 1.0 version of the framework you need to do the following before continuing:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install .Net framework 1.0 SP2 (Skip this step if you are running .Net Framework 1.1)      &lt;br /&gt;      &lt;br /&gt;SP2 of .Net framework 1.0 can be downloaded from: &lt;a href="http://msdn.microsoft.com/netframework/downloads/sp/download.asp"&gt;http://msdn.microsoft.com/netframework/downloads/sp/download.asp&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install the hotfix &lt;a href="http://support.microsoft.com/?id=329956"&gt;329956&lt;/a&gt;. This fix resolves an issue of the process recycling due to a false deadlock. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;D. Configure server to capture Deadlock    &lt;br /&gt;================================&lt;/p&gt;  &lt;p&gt;Add the following registry key. This was added to the .NET Framework so that a breakpoint exception will be thrown when the deadlock occurs. This is documented in the following article:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;a href="http://support.microsoft.com/?id=325947"&gt;325947 Event ID 1003 with ASP.NET Deadlock&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;pre class="code"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: DebugOnDeadlock
Value: 2

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: UnderDebugger
Value: 0&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;E. Configure DebugDiag 
  &lt;br /&gt;=================== &lt;/p&gt;

&lt;p&gt;Configure DebugDiag to capture the memory dump when the BreakPoint Exception is thrown and when the process stops.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Open DebugDiag &lt;/li&gt;

  &lt;li&gt;On the &lt;strong&gt;Rules &lt;/strong&gt;tab, click &lt;strong&gt;Add Rule&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Crash&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;All IIS Processes&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Exception Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Exception&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;Breakpoint Exception&lt;/strong&gt;, change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Advanced Breakpoint Configuration&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Add Breakpoint&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Select &lt;strong&gt;KERNEL32!ExitProcess&lt;/strong&gt; and change Action Type to &lt;strong&gt;Full UserDump&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click &lt;strong&gt;Save and Close&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Click Next through the rest of the wizard &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;After the issue occurs&lt;/h3&gt;

&lt;p&gt;The memory dump will automatically get captured when the Deadlock occurs.&lt;/p&gt;

&lt;p&gt;A. Stop the Performance Monitor log 
  &lt;br /&gt;=================================== &lt;/p&gt;

&lt;p&gt;In Performance Monitor:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Right click on your log that is now listed under &lt;strong&gt;Counter Logs&lt;/strong&gt; &lt;/li&gt;

  &lt;li&gt;Choose &lt;strong&gt;Stop Log&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f14%2fasp-net-tips-what-to-gather-to-troubleshoot-part-4-deadlocks.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f14%2fasp-net-tips-what-to-gather-to-troubleshoot-part-4-deadlocks.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8503363" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category><category domain="http://blogs.msdn.com/tom/archive/tags/Hang/default.aspx">Hang</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot – part 3 – Crash</title><link>http://blogs.msdn.com/tom/archive/2008/05/06/asp-net-tips-what-to-gather-to-troubleshoot-part-3-crash.aspx</link><pubDate>Tue, 06 May 2008 18:39:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8463292</guid><dc:creator>Tom</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/tom/comments/8463292.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8463292</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8463292</wfw:comment><description>&lt;h3&gt;Defining an IIS Crash&lt;/h3&gt;  &lt;p&gt;A Crash in IIS occurs when an IIS process (INETINFO.EXE, DLLHOST.EXE, W3WP.EXE) terminates unexpectedly. A Crash typically happens when there is an Unhandled Exception caused by an Access Violation, Stack Overflow, etc. In these situations, the operating system catches the exception and terminates the process. &lt;/p&gt;  &lt;p&gt;Dr. Watson is the default debugger to monitor for process failures in Windows. It can generate a Dump File and a Log File to document a failure in a process. Run &lt;b&gt;drwtsn32&lt;/b&gt; from Start -&amp;gt; Run to view the settings and file location. You can then look at the &lt;b&gt;drwtsn32.log&lt;/b&gt; and &lt;b&gt;user.dmp&lt;/b&gt; files. &lt;/p&gt;  &lt;p&gt;To troubleshoot, we attach a debugger to the process and catch the exception before the operating system.&lt;/p&gt;  &lt;h3&gt;Troubleshooting Steps&lt;/h3&gt;  &lt;p&gt;1. Install the Debug Diagnostic tool&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The default install path is C:\Program Files\DebugDiag and can be changed during the installation.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. Check Leave Running When Idle (IIS5, IIS5.1)&lt;/b&gt; with the following steps: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open Component Services (Start -&amp;gt; Programs -&amp;gt; Administrative Tools -&amp;gt; Component Services)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Expand Component Services, expand Computers, expand My Computer, and expand COM+ Applications&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) For any custom packages or web sites/directories:&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; i) Right-click and choose Properties&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; ii) Go to the Advanced Tab&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; iii) Check &lt;strong&gt;Leave Running when Idle&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160; iv) Click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;3. Uncheck Debug Exception Catching (IIS5 and IIS5.1)&lt;/b&gt; with the following steps: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open the MMC for IIS&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Right-click the computer name and click Properties&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Click the Edit button for the Master WWW properties&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Go to the Home Directory tab&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click the Configuration button towards the bottom&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;f) Go to the &lt;strong&gt;Process Options&lt;/strong&gt; tab and uncheck &lt;strong&gt;Enable Debug Exception Catching&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;g) Click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;4. Disable Health Monitoring (IIS6)&lt;/b&gt; with the following steps: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open the MMC for IIS and expand Application Pools&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Right-click the Application Pool and click Properties&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Recycling tab: Uncheck all &lt;strong&gt;Recycle worker process&lt;/strong&gt; settings&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Performance tab: Uncheck &lt;strong&gt;Shutdown worker processes after being idle for&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Health tab: Uncheck &lt;strong&gt;Enable rapid-fail protection&lt;/strong&gt; and &lt;strong&gt;Enable pinging&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;f) Click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;5. Restart IIS&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;6. Create a Crash Rule&lt;/b&gt; with the following steps: &lt;/p&gt;  &lt;h5&gt;IIS5&lt;/h5&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open DebugDiag (Start -&amp;gt; Programs –&amp;gt; Debug Diagnostics Tool 1.1)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Select &lt;strong&gt;Crash&lt;/strong&gt; and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Select the desired Target Type and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Click &lt;strong&gt;Breakpoints…&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click &lt;strong&gt;Add Breakpoint…&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;f) For &lt;strong&gt;Breakpoint Expression&lt;/strong&gt;, select &lt;strong&gt;ComSvcs!ComSvcsExceptionFilter&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;g) For &lt;strong&gt;Action Type&lt;/strong&gt;, select &lt;strong&gt;Full Userdump&lt;/strong&gt; and click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;h) Click &lt;strong&gt;Save and Close&lt;/strong&gt; and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;i) Click Next for &lt;strong&gt;Rule Name&lt;/strong&gt;. The &lt;strong&gt;Userdump Location&lt;/strong&gt; can be changed here. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;j) Select &lt;strong&gt;Activate the rule now&lt;/strong&gt; and click Finish&lt;/p&gt; &lt;/blockquote&gt;  &lt;h5&gt;IIS6&lt;/h5&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open DebugDiag (Start -&amp;gt; Programs -&amp;gt; Debug Diagnostics Tool 1.1)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Select &lt;strong&gt;Crash&lt;/strong&gt; and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Select the desired Target Type and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Click Next in &lt;strong&gt;Advanced Configuration (Optional)&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click Next for &lt;strong&gt;Rule Name&lt;/strong&gt;. The &lt;strong&gt;Userdump Location&lt;/strong&gt; can be changed here. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;f) Select &lt;strong&gt;Activate the rule now&lt;/strong&gt; and click Finish&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice the Status is Active. The Userdump Count will increase each time a dump file is created. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;7. Analyze the Dump&lt;/b&gt; by selecting the &lt;strong&gt;Advanced Analysis&lt;/strong&gt; tab and clicking &lt;strong&gt;Add Data Files&lt;/strong&gt;. When the .dmp is added, select the &lt;strong&gt;Crash/Hang Analyzers&lt;/strong&gt; script and click &lt;strong&gt;Start Analysis&lt;/strong&gt;. When finished, a report (.mht) will be created in C:\Program Files\DebugDiag\Reports and displayed in Internet Explorer with the results and recommendations. If using custom DLL’s, the Symbol path (Tools menu -&amp;gt; Options and Settings -&amp;gt; Symbol Search Path) to the custom PDB files can be added. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;8. Compress the Data&lt;/b&gt; using DebugDiag (Tools menu -&amp;gt; Create Increment Cabinet File) and analyze this file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f06%2fasp-net-tips-what-to-gather-to-troubleshoot-part-3-crash.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f06%2fasp-net-tips-what-to-gather-to-troubleshoot-part-3-crash.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8463292" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/Crash/default.aspx">Crash</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item><item><title>ASP.NET Tips: What to gather to troubleshoot – part 2 – High Memory</title><link>http://blogs.msdn.com/tom/archive/2008/05/05/asp-net-tips-what-to-gather-to-troubleshoot-part-2-high-memory.aspx</link><pubDate>Mon, 05 May 2008 16:28:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8460433</guid><dc:creator>Tom</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/tom/comments/8460433.aspx</comments><wfw:commentRss>http://blogs.msdn.com/tom/commentrss.aspx?PostID=8460433</wfw:commentRss><wfw:comment>http://blogs.msdn.com/tom/rsscomments.aspx?PostID=8460433</wfw:comment><description>&lt;h3&gt;Identifying a Memory leak&lt;/h3&gt;  &lt;p&gt;A Memory Leak in an IIS process (INETINFO.EXE, DLLHOST.EXE, W3WP.EXE) occurs when Memory Usage in Task Manager continues to consume more than 50% of the physical RAM until running out of system memory or until the process stops functioning. &lt;/p&gt;  &lt;p&gt;On heavily-used sites, a continuous growth in memory over the first 24 hours of use is normal. IIS caches much of its data and the TTL on the cache is 24 hours. Since IIS typically uses 50% of available physical RAM (per IIS Process; not the total of all IIS Processes), use this as a guide to identify a memory problem. The steps below will help troubleshoot a memory leak by gathering a memory dump of the leaking process.&lt;/p&gt;  &lt;h3&gt;Important Questions&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;How much RAM is on the machine? &lt;/li&gt;    &lt;li&gt;How much RAM does the leaking IIS process take? &lt;/li&gt;    &lt;li&gt;How long does it take to reproduce? &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Troubleshooting Steps&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;1. Install the Debug Diagnostic tool&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1286&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The default install path is C:\Program Files\DebugDiag and can be changed during the installation.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2. Set up&lt;/b&gt;&lt;b&gt; Performance Monitor Logging&lt;/b&gt; before the issue occurs: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open DebugDiag (Start -&amp;gt; Programs –&amp;gt; Debug Diagnostics Tool 1.1)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Go to the Tools menu -&amp;gt; Options and Settings&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Select the Performance Log tab&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Click &amp;quot;Enable Performance Counter Data Logging&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; The Data Sampling Interval and time to start monitoring is subjective to when the memory leak reproduces. Due to the log size, work with your Support Professional on a solution where we get the information needed while not overwhelming the server.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3. Create a Memory and Handle Leak Rule&lt;/b&gt; with the following steps: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open DebugDiag (Start -&amp;gt; Programs -&amp;gt; Debug Diagnostics Tool 1.1)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Select &amp;quot;Memory and Handle Leak&amp;quot; and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Select the leaking Process and click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) In “Configure Tracking Duration”, a Warm-Up time can be specified but if the issue reproduces immediately, select “Start memory tracking immediately”. For “Tracking Time”, specify the time it will take to reproduce the issue. At the end of the specified time, a dump will be created. Make sure “Auto-create a crash rule” is checked.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;f) Click Finish for &amp;quot;Rule Name&amp;quot;. The &amp;quot;Userdump Location&amp;quot; can be changed here. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Notice the Status is Active. The Userdump Count will increase each time a dump file is created.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;4. Get the Data Manually&lt;/b&gt; if you are not sure when the leak will occur. In DebugDiag, go to the Processes tab, right-click the leaking process and select “Monitor For Leaks”. When the process gets up to 60%-80% of RAM, right-click the leaking process and select &amp;quot;Create Full Userdump”.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;5. Stop &lt;/b&gt;&lt;b&gt;PerfMon Logging&lt;/b&gt; after the dump has finished:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;a) Open DebugDiag (Start -&amp;gt; Programs –&amp;gt; Debug Diagnostics Tool 1.1 )&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;b) Go to the Tools menu -&amp;gt; Options and Settings&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;c) Select the Performance Log tab&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;d) Click &amp;quot;Disable Performance Counter Data Logging&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;e) Click OK&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;b&gt;6. Analyze the Dump&lt;/b&gt; by selecting the &amp;quot;Advanced Analysis&amp;quot; tab and clicking &amp;quot;Add Data Files&amp;quot;. When the .dmp is added, select the &amp;quot;Memory Pressure Analysis” script and click &amp;quot;Start Analysis&amp;quot;. When finished, a report (.mht) will be created in C:\Program Files\DebugDiag\Reports and displayed in Internet Explorer with the results and recommendation. If using custom DLL’s, the Symbol path (Tools menu -&amp;gt; Options and Settings -&amp;gt; Symbol Search Path) to the custom PDB files can be added. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f05%2fasp-net-tips-what-to-gather-to-troubleshoot-part-2-high-memory.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fblogs.msdn.com%2ftom%2farchive%2f2008%2f05%2f05%2fasp-net-tips-what-to-gather-to-troubleshoot-part-2-high-memory.aspx" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8460433" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/tom/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/tom/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.msdn.com/tom/archive/tags/High+Memory/default.aspx">High Memory</category><category domain="http://blogs.msdn.com/tom/archive/tags/ASP.NET+Tip/default.aspx">ASP.NET Tip</category></item></channel></rss>