<?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>Habib Heydarian's Blog @ Microsoft</title><link>http://blogs.msdn.com/habibh/default.aspx</link><description>Program Manager, Visual Studio</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>How to Count the Lines of Code (LOC) in your application using Visual Studio</title><link>http://blogs.msdn.com/habibh/archive/2009/10/27/how-to-count-the-lines-of-code-loc-in-your-application-using-visual-studio.aspx</link><pubDate>Wed, 28 Oct 2009 01:30:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9913841</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9913841.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9913841</wfw:commentRss><description>&lt;p&gt;I was talking to someone the other day and he asked me whether Visual Studio has a tool to count the lines of code in an application. It occurred to me that others might be interested in the answer so I decided to blog about it.&lt;/p&gt;  &lt;p&gt;There is a tool called Code Metrics in Visual Studio 2008 and 2010 that among other things, counts the lines of code in a project. Using Code Metrics is very simple. In Solution Explorer, select the project that you want to know the LOC for, right-click and select &amp;quot;Calculate Code Metrics&amp;quot;.&lt;/p&gt;  &lt;p&gt;The screenshot below shows the Code Metrics window. One of the nice things about the Code Metrics window is that it shows you the lines of code per project, namespace, class or method.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/Howmany_D0FD/image_3.png" width="1053" height="356" /&gt; &lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913841" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Code+Analysis/default.aspx">Code Analysis</category></item><item><title>Looking for questions or feedback on IntelliTrace</title><link>http://blogs.msdn.com/habibh/archive/2009/10/26/looking-for-questions-or-feedback-on-intellitrace.aspx</link><pubDate>Tue, 27 Oct 2009 05:23:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9913336</guid><dc:creator>habibh</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9913336.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9913336</wfw:commentRss><description>&lt;p&gt;During the last few months, I've been blogging extensively about a new Visual Studio 2010 feature called IntelliTrace (formerly known as the &amp;quot;Historical Debugger&amp;quot;). We are very excited about IntelliTrace and think that it's going to change how people debug their applications.&lt;/p&gt;  &lt;p&gt;Since IntelliTrace is a brand new feature, we are eager to hear from developers about what they think about it. So, here is my offer: If you have any questions or feedback (both positive and negative) about IntelliTrace, send me your feedback via this blog and I will reply with an answer within 24 hours. Regardless of weather you've used IntelliTrace extensively and have an &amp;quot;advanced&amp;quot; questions, or you've never used it before and just want to learn about it, I'll be happy to answer any questions related to IntelliTrace.&lt;/p&gt;  &lt;p&gt;Thanks in advance.&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913336" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>Using IntelliTrace to view the return value of a VB or C# method</title><link>http://blogs.msdn.com/habibh/archive/2009/10/23/using-intellitrace-to-view-the-return-value-of-a-vb-or-c-method.aspx</link><pubDate>Sat, 24 Oct 2009 04:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9912785</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9912785.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9912785</wfw:commentRss><description>&lt;p&gt;A few months ago, I &lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/10/how-to-view-the-return-value-of-a-c-or-vb-method-in-the-vs-debugger.aspx"&gt;blogged&lt;/a&gt; about how to view the return value of a C# or VB method in the Visual Studio debugger. As I explained in that blog post, the debugger does not support viewing the return value of a .NET method, so you have to apply a workaround or two.&lt;/p&gt;  &lt;p&gt;Being able to see the return value of a method comes in particularly handy when you have methods that take other methods as their parameters, e.g. F(A(x), B(y)), where A() and B() are methods themselves. For example, in the code example below, how can you see the value that is returned by c.CalculateArea(radius)?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_5.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Return Value" border="0" alt="Return Value" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_thumb_1.png" width="1004" height="655" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;IntelliTrace in Visual Studio 2010 makes it easy to view the return value of a method.&lt;/p&gt;  &lt;p&gt;The first step is to change the default IntelliTrace options to record &amp;quot;events and call information&amp;quot;, as shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace Options" border="0" alt="IntelliTrace Options" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_8.png" width="862" height="578" /&gt; &lt;/p&gt;  &lt;p&gt;After enabling the above option, IntelliTrace will record the return value and parameters of all methods in the running application. Now, whenever you stop in the debugger, the IntelliTrace NavBar is displayed in the editor margin. To see the return value of a method, click the &amp;quot;Go to Previous Event&amp;quot; button (Ctrl+Shift+F11) to step back to the method that you want to see the value for, shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace NavBar" border="0" alt="IntelliTrace NavBar" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_11.png" width="845" height="651" /&gt; &lt;/p&gt;  &lt;p&gt;After clicking the button, the debugger will display the method that you stepped back to in the Autos window, as shown in the following screenshot.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Debugger Autos window" border="0" alt="Debugger Autos window" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_14.png" width="846" height="727" /&gt; &lt;/p&gt;  &lt;p&gt;Expanding the method in the Autos window will display the return value. The debugger displays the name of the return value as &lt;strong&gt;[Return Value]&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Return Value in Autos window" border="0" alt="Return Value in Autos window" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/UsingIntelliTracetoviewthereturnvalueofa_11CF7/image_19.png" width="657" height="240" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912785" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>IntelliTrace is not available. Why?</title><link>http://blogs.msdn.com/habibh/archive/2009/10/22/intellitrace-is-not-available-why.aspx</link><pubDate>Thu, 22 Oct 2009 16:53:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911510</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9911510.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9911510</wfw:commentRss><description>&lt;p&gt;When using IntelliTrace, you might run across the following error message in the IntelliTrace window:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;IntelliTrace is not available. See the Debugger Output window or the Windows Application Events Log.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace window" border="0" alt="IntelliTrace window" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/IntelliTraceisnotavailable.Why_1047D/image_3.png" width="389" height="249" /&gt; &lt;/p&gt;  &lt;p&gt;Below is a list of reasons why you might see the above error message when trying to use IntelliTrace.&lt;/p&gt;  &lt;p&gt;1) In Visual Studio 2010, IntelliTrace does not support debugging a 64-bit process inside Visual Studio. You can workaround this limitation by changing the project configuration for your project to 32-bit. See this &lt;a href="http://blogs.msdn.com/habibh/archive/2009/10/12/how-to-edit-code-when-debugging-a-64-bit-application.aspx"&gt;article&lt;/a&gt; for more details.&lt;/p&gt;  &lt;p&gt;2) IntelliTrace is not available if you have attached to the application that you are debugging. The only workaround is to start the application under the debugger.&lt;/p&gt;  &lt;p&gt;3) IntelliTrace is not supported for native C++ applications. We hope to fix this limitation in the future.&lt;/p&gt;  &lt;p&gt;4) IntelliTrace does not support SQL CLR projects&lt;/p&gt;  &lt;p&gt;If you have any feedback or are seeing the above error messages in other scenarios, feel free to send me feedback.&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911510" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>The future of debugging is here! Visual Studio 2010 now supports stepping back in the debugger.</title><link>http://blogs.msdn.com/habibh/archive/2009/10/21/the-future-of-debugging-is-here-visual-studio-2010-now-supports-stepping-back-in-the-debugger.aspx</link><pubDate>Thu, 22 Oct 2009 05:05:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911113</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9911113.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9911113</wfw:commentRss><description>&lt;p&gt;In my previous post &lt;a href="http://blogs.msdn.com/habibh/archive/2009/10/20/getting-started-with-visual-studio-2010-intellitrace-hello-intellitrace.aspx"&gt;Getting Started with Visual Studio 2010 IntelliTrace: Hello IntelliTrace!&lt;/a&gt;, I described how to use the new IntelliTrace feature in Visual Studio 2010 to debug an application. But there's more to IntelliTrace. IntelliTrace also allows you &lt;em&gt;step back&lt;/em&gt; in the debugger! However, the step back functionality isn't enabled by default. You can enable this feature via Tools-&amp;gt;Options-&amp;gt;IntelliTrace. On the IntelliTrace Options dialog, select the &lt;em&gt;IntelliTrace events and call information&lt;/em&gt; option. This is shown in the dialog below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IntelliTrace Options" border="0" alt="IntelliTrace Options" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/HowtouseIntelliTracetostepbackintheVisua_FC71/image_3.png" width="648" height="379" /&gt; &lt;/p&gt;  &lt;p&gt;After selecting the option, you can now use the debugger step back through the code. In the following screenshot, you can see a &lt;em&gt;before&lt;/em&gt; and &lt;em&gt;after&lt;/em&gt; screenshot. On the left hand side (screen 1), the Step Back button is highlighted. The right hand side (screen 2) shows what happens after I've clicked the Step Back button, i.e. the debugger has stepped back into the calling function, Main().&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Before and After" border="0" alt="Before and After" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/HowtouseIntelliTracetostepbackintheVisua_FC71/image_6.png" width="804" height="621" /&gt; &lt;/p&gt;  &lt;p&gt;We are very excited about IntelliTrace and we think it's going to change developers' lives. If you have any questions or feedback about IntelliTrace, feel free to drop me a line.&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911113" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>Getting Started with Visual Studio 2010 IntelliTrace: Hello IntelliTrace!</title><link>http://blogs.msdn.com/habibh/archive/2009/10/20/getting-started-with-visual-studio-2010-intellitrace-hello-intellitrace.aspx</link><pubDate>Wed, 21 Oct 2009 02:41:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910304</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9910304.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9910304</wfw:commentRss><description>&lt;p&gt;One of the most talked about features in Visual Studio 2010 Beta 2 is IntelliTrace. In a nutshell, IntelliTrace allows a developer to record the application execution and play it back. Using IntelliTrace, a developer can do some cool things like step back in the debugger.&lt;/p&gt;  &lt;p&gt;In this blog post, I'll do a &amp;quot;Hello World!&amp;quot; version of IntelliTrace to help you get started with this feature. We'll start with a vanilla Windows Form project and use it to explore various capabilities of IntelliTrace.&lt;/p&gt;  &lt;p&gt;To start with, create a brand new Windows Forms project using either VB or C#. Then, drag and drop a button on the form, as shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Hello IntelliTrace Application" border="0" alt="Hello IntelliTrace Application" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/GettingStartedwithVisualStudio2010Intell_E9B5/image_3.png" width="300" height="300" /&gt; &lt;/p&gt;  &lt;p&gt;Double-click on the button and add the following line to the click event handler.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;Debug.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;Hello IntelliTrace!&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Press F5 to run the application and then click on the &amp;quot;Hello IntelliTrace!&amp;quot; button. On the right-hand of the screen, you should see a new window called the IntelliTrace window, as shown below. Click on the &amp;quot;Break All&amp;quot; link in the IntelliTrace window.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/GettingStartedwithVisualStudio2010Intell_E9B5/image_7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace window" border="0" alt="IntelliTrace window" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/GettingStartedwithVisualStudio2010Intell_E9B5/image_thumb_2.png" width="339" height="373" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After clicking the &amp;quot;Break All&amp;quot; button, the IntelliTrace window displays a number of very useful &amp;quot;events&amp;quot;, as shown below. IntelliTrace records what happened in your application in chronological order. So, reading down the IntelliTrace window, you can see that the following things happened:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The application started under the debugger &lt;/li&gt;

  &lt;li&gt;The user clicked on a button with the label &amp;quot;Hello IntelliTrace!&amp;quot; &lt;/li&gt;

  &lt;li&gt;The application output some trace information using Debug.WriteLine() &lt;/li&gt;

  &lt;li&gt;The application paused in the debugger &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IntelliTrace window with annotations" border="0" alt="IntelliTrace window with annotations" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/GettingStartedwithVisualStudio2010Intell_E9B5/image_13.png" width="339" height="373" /&gt; &lt;/p&gt;

&lt;p&gt;What IntelliTrace is doing is keeping a &lt;em&gt;diary&lt;/em&gt; or &lt;em&gt;journal&lt;/em&gt; of the application as it was executing so that you can read through what happened. But what really makes the experience that much more compelling is that you can click on an event in the IntelliTrace window and navigate to the source code that caused that event, shown here.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Source window" border="0" alt="Source window" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/GettingStartedwithVisualStudio2010Intell_E9B5/image_16.png" width="800" height="372" /&gt; &lt;/p&gt;

&lt;p&gt;In the next blog, I'll describe how you can customize IntelliTrace to collect additional events such as opening a file or reading from Windows registry keys.&lt;/p&gt;

&lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910304" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>Visual Studio 2010 Beta 2: The Historical Debugger is now IntelliTrace!</title><link>http://blogs.msdn.com/habibh/archive/2009/10/19/visual-studio-2010-beta-2-the-historical-debugger-is-now-intellitrace.aspx</link><pubDate>Mon, 19 Oct 2009 16:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909144</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9909144.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9909144</wfw:commentRss><description>&lt;p&gt;Over the last few months, I've blogged a fair amount about a new feature in Visual Studio 2010 called the Historical Debugger. With the announcement of &lt;a href="http://go.microsoft.com/fwlink/?LinkID=151797"&gt;Visual Studio 2010 Beta 2&lt;/a&gt; also comes a name change for the Historical Debugger. It is now called IntelliTrace™.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/u&gt; We literally spent over two years agonizing over the name for the Historical Debugger. In fact, the team made a list of over 100 candidate names. After much debate, some tears and lots of back and forth, we settled on the name IntelliTrace. So far, many people have told us that they much prefer the name IntelliTrace over Historical Debugger.&lt;/p&gt;  &lt;p&gt;Despite the name change, much of the functionality of IntelliTrace remains the same as I had described before. For a refresher, here are a set of blogs that will get you started on IntelliTrace.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-i.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part I)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-ii.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part II)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-iii.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part III)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-iv.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part IV)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-v.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part V)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/07/14/debugging-linq-to-sql-queries-using-the-historical-debugger.aspx"&gt;Debugging LINQ to SQL queries using the Historical Debugger&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/07/23/the-anatomy-of-the-historical-debugger-navigation-bar-navbar.aspx"&gt;The anatomy of the Historical Debugger Navigation Bar (Navbar)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/08/04/how-to-debug-an-exception-with-the-visual-studio-2010-historical-debugger.aspx"&gt;How to debug an exception with the Visual Studio 2010 Historical Debugger&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In the coming weeks and months, I'll be writing a lot about IntelliTrace and how you can use it to make debugging much more productive.&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909144" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/IntelliTrace/default.aspx">IntelliTrace</category></item><item><title>How to edit code when debugging a 64-bit application</title><link>http://blogs.msdn.com/habibh/archive/2009/10/12/how-to-edit-code-when-debugging-a-64-bit-application.aspx</link><pubDate>Tue, 13 Oct 2009 05:19:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906445</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9906445.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9906445</wfw:commentRss><description>&lt;p&gt;One of the most popular features in the Visual Studio debugger is the ability to edit code during a debug session and have the changes apply without having to stop the debugger, recompile the application and then run the application to verify the changes. This feature is affectionately known as &amp;quot;Edit and Continue&amp;quot; or &amp;quot;E&amp;amp;C&amp;quot; for short.&lt;/p&gt;  &lt;p&gt;Unfortunately, Edit and Continue isn't supported on 64-bit. In fact, if you try to use Edit &amp;amp; Continue when debugging a 64-bit application, you get the following error message: &amp;quot;Changes to 64-bit applications are not allowed&amp;quot;, as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_7.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Edit and Continue dialog" border="0" alt="Edit and Continue dialog" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_thumb_2.png" width="441" height="183" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Many users may not be aware that by default, when you create a C# or VB project in Visual Studio 2008, the &amp;quot;Platform&amp;quot; for the project is set to &amp;quot;Any CPU&amp;quot;. This means that if you run your application on a 32-bit operating system, your application will run as a 32-bit process and similarly, if you run your application on a 64-bit operating system, the application will be 64-bit. The consequence of &amp;quot;Any CPU&amp;quot; is that when you try to debug your application on a 64-bit operating system, you won't be able to use the Edit and Continue feature.&lt;/p&gt;  &lt;p&gt;However, there is a workaround. During development, you can set the Platform for your project to 32-bit which means that your application will run as a 32-bit process even on a 64-bit operating system. This is known as WOW64 or &amp;quot;Windows On Windows&amp;quot; which basically means that you can run a 32-bit application on a 64-bit operating system.&lt;/p&gt;  &lt;p&gt;So, how do you set the Platform for your project to 32-bit? Well, you need to create a 32-bit platform using the Visual Studio Configuration Manager. Here is a short walkthrough.&lt;/p&gt;  &lt;p&gt;First, open the &amp;quot;Configuration Manager&amp;quot; dialog from Build –&amp;gt; Configuration Manager. The Configuration Manager dialog is shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Configuration Manager" border="0" alt="Configuration Manager" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_12.png" width="720" height="451" /&gt; &lt;/p&gt;  &lt;p&gt;On the Configuration Manager dialog, select &amp;quot;New...&amp;quot; from the &amp;quot;Active solution platform&amp;quot; dropdown, as shown here.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Create New Platform" border="0" alt="Create New Platform" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_15.png" width="710" height="441" /&gt; &lt;/p&gt;  &lt;p&gt;On the &amp;quot;New Solution Platform&amp;quot; dialog, select &amp;quot;x86&amp;quot; and press the OK button.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New Solution Platform dialog" border="0" alt="New Solution Platform dialog" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/9d46e66e51d6_13278/image_18.png" width="353" height="229" /&gt; &lt;/p&gt;  &lt;p&gt;That's it! Your project is now compiled as a 32-bit application and therefore, it also runs as a 32-bit process.&lt;/p&gt;  &lt;p&gt;An important note to remember is that if you are planning to deploy your application to a 64-bit machine and you want the application to run as a 64-bit process, don't forget to set the project platform back to &amp;quot;Any CPU&amp;quot; and compile the project.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906445" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>RUNTIME turns 100,000!</title><link>http://blogs.msdn.com/habibh/archive/2009/09/28/runtime-turns-100-000.aspx</link><pubDate>Tue, 29 Sep 2009 07:53:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9900600</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9900600.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9900600</wfw:commentRss><description>&lt;p&gt;Today represents a huge personal milestone. My car reached a 100,000 miles! There is nothing unique or special about my car except the license plate and the Visual Studio logo on the hood. Most of my friends refer to the car as RUNTIME (for obvious reasons).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/RUNTIMEturns100000_FA27/RUNTIME.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="RUNTIME" border="0" alt="RUNTIME" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/RUNTIMEturns100000_FA27/RUNTIME_thumb.jpg" width="644" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I purchased it when I first joined Microsoft from my first manager and have had it since then. It's a great little utility truck.&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Announcements/default.aspx">Announcements</category></item><item><title>Debugging a COM object (Runtime Callable Wrapper) with Visual Studio 2010</title><link>http://blogs.msdn.com/habibh/archive/2009/09/22/debugging-a-com-object-runtime-callable-wrapper-with-visual-studio-2010.aspx</link><pubDate>Tue, 22 Sep 2009 10:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897824</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9897824.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9897824</wfw:commentRss><description>&lt;p&gt;If you have written managed code that uses a COM object, then you are probably familiar with &lt;strong&gt;System.__ComObject&lt;/strong&gt;. When a COM object lacks a Runtime Callable Wrapper (RCW), the CLR provides a generic RCW which is an instance of the type &amp;quot;System.__ComObject&amp;quot;. Unfortunately, one of the downsides to System.__ComObject is that the Visual Studio 2008 debugger cannot display its members.&lt;/p&gt;  &lt;p&gt;Let's look at an example. When I was writing this blog post, I wrote a tiny console application that would speak the word &amp;quot;Hello&amp;quot; using the Microsoft Speech Object Library (SpeechLib) which is a COM API.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; SpeechLib;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Sample&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         SpVoice spVoice = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SpVoice();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;         spVoice.Speak(&lt;span style="color: #006080"&gt;&amp;quot;Hello&amp;quot;&lt;/span&gt;, SpeechVoiceSpeakFlags.SVSFDefault);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Unfortunately, as soon as I ran the application, the application threw a COMException with the HRESULT 0x8004503A, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Application exception" border="0" alt="Application exception" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/DebuggingCOMobjectsjustgotawholeloteasie_13770/image_5.png" width="798" height="529" /&gt; &lt;/p&gt;

&lt;p&gt;Since I didn't know what the problem was, I added the variable &amp;quot;spVoice&amp;quot; to the Watch window to have a closer look. However, the debugger couldn't show me anything since I didn't have a RCW for SpeechLib and hence the CLR had generated a generic one at runtime. So, I'm somewhat stuck at this point.&lt;/p&gt;

&lt;p&gt;Luckily, in Visual Studio 2010, there is now a &amp;quot;Dynamic View&amp;quot; that displays all the members of a COM object of type System.__ComObject, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/DebuggingCOMobjectsjustgotawholeloteasie_13770/image_9.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/DebuggingCOMobjectsjustgotawholeloteasie_13770/image_thumb_3.png" width="835" height="196" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Expanding the &amp;quot;Dynamic View&amp;quot; node displays the members of spVoice. As can be seen from the screenshot below, the reason for the exception was because the audio service on my computer wasn't running. This makes sense since I was running this demo on the Hyper-V virtual machine.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/DebuggingCOMobjectsjustgotawholeloteasie_13770/image_6.png" width="809" height="315" /&gt; &lt;/p&gt;

&lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897824" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category></item><item><title>Coverage of the Visual Studio 2010 Historical Debugger</title><link>http://blogs.msdn.com/habibh/archive/2009/09/21/coverage-of-the-visual-studio-2010-historical-debugger.aspx</link><pubDate>Mon, 21 Sep 2009 10:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897051</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9897051.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9897051</wfw:commentRss><description>&lt;p&gt;During the last couple of months, I've covered the Historical Debugger extensively. If you are interested in learning more about this new feature in Visual Studio 2010, the following blog entries should help you get started.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-i.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part I)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-ii.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part II)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-iii.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part III)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-iv.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part IV)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/06/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-v.aspx"&gt;An in depth look at the Historical Debugger in Visual Studio 2010 (Part V)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/07/14/debugging-linq-to-sql-queries-using-the-historical-debugger.aspx"&gt;Debugging LINQ to SQL queries using the Historical Debugger&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/07/23/the-anatomy-of-the-historical-debugger-navigation-bar-navbar.aspx"&gt;The anatomy of the Historical Debugger Navigation Bar (Navbar)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/habibh/archive/2009/08/04/how-to-debug-an-exception-with-the-visual-studio-2010-historical-debugger.aspx"&gt;How to debug an exception with the Visual Studio 2010 Historical Debugger&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897051" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Historical+Debugger/default.aspx">Historical Debugger</category><category domain="http://blogs.msdn.com/habibh/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category></item><item><title>An in depth look at the Historical Debugger in Visual Studio 2010 (Part VI)</title><link>http://blogs.msdn.com/habibh/archive/2009/09/18/an-in-depth-look-at-the-historical-debugger-in-visual-studio-2010-part-vi.aspx</link><pubDate>Sat, 19 Sep 2009 06:48:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897049</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9897049.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9897049</wfw:commentRss><description>&lt;p&gt;In previous blogs, I have covered the Historical Debugger extensively and talked about many of the scenarios. In this post, I'll walk through another scenario where the Historical Debugger is very useful which is Load Testing. When loading testing an application, you can have the Historical Debugger collect information during the run and if one or more of the tests fail, you can use the Historical Debugger log file to debug the test failure(s).&lt;/p&gt;  &lt;p&gt;Let's walk through an example. For this walkthrough, I have a Load Test which contains a single Web Test. The application under test is the&amp;#160; BeerHouse sample application.&lt;/p&gt;  &lt;p&gt;The first step in setting up the Historical Debugger for collecting data during load testing is to enable the &amp;quot;Diagnostic Tracing&amp;quot; option in the Test Settings, as shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Test Settings" border="0" alt="Test Settings" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/AnindepthlookattheHistoricalDebuggerinVi_96C6/image_3.png" width="766" height="567" /&gt;&lt;/p&gt;  &lt;p&gt;Once you've enabled the Historical Debugger, the next step is to run the Load Test. After the Load Test is complete, you should see the test result details which also includes the number of errors, shown below.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/AnindepthlookattheHistoricalDebuggerinVi_96C6/image_5.png" width="862" height="656" /&gt; &lt;/p&gt;  &lt;p&gt;While the Load Test was executing, the Historical Debugger was recording the execution history. The following screenshot shows the Historical Debugger log file (QTAgent32_000013d0_090918_204309.tdlog).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/AnindepthlookattheHistoricalDebuggerinVi_96C6/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Historical Debugger Log file" border="0" alt="Historical Debugger Log file" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/AnindepthlookattheHistoricalDebuggerinVi_96C6/image_thumb.png" width="813" height="424" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Double-clicking the log file opens the Historical Debugger Summary page, shown below. Using the summary page, you can investigate the root cause of the test failure.&lt;/p&gt;  &lt;p&gt;&lt;img title="Historical Debugger Summary page" border="0" alt="Historical Debugger Summary page" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/AnindepthlookattheHistoricalDebuggerinVi_DCB2/image_21.png" width="880" height="811" /&gt;&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897049" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Historical+Debugger/default.aspx">Historical Debugger</category><category domain="http://blogs.msdn.com/habibh/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category></item><item><title>Class Breakpoint: How to set a breakpoint on a C++ class in the Visual Studio Debugger</title><link>http://blogs.msdn.com/habibh/archive/2009/09/10/class-breakpoint-how-to-set-a-breakpoint-on-a-c-class-in-the-visual-studio-debugger.aspx</link><pubDate>Thu, 10 Sep 2009 21:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9893993</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9893993.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9893993</wfw:commentRss><description>&lt;p&gt;When debugging an application, there are times when you want the debugger to stop whenever any of the functions in a particular class are called. An example of this may be when you are trying to find out which object is calling your class. Of course, you could manually set a breakpoint on every function in your class but that is both tedious and time consuming, not to mention error prone (what if you miss one of the functions?)&lt;/p&gt;  &lt;p&gt;What you really want is a &amp;quot;class breakpoint&amp;quot;, that is, a breakpoint on an entire class and all its functions, operators, constructors, etc. In Visual Studio, you can set a &amp;quot;class breakpoint&amp;quot; using a function breakpoint. Specifically, when setting a function breakpoint, instead of specifying a function name, you can specify the name of the class followed by the '*' wildcard character. The '*' wildcard indicates to the debugger to break on &amp;quot;anything&amp;quot; that is called within the class.&lt;/p&gt;  &lt;p&gt;Let's go through an example. In the following class declaration, I want to set a breakpoint on all methods in the &lt;font face="Courier New"&gt;Stack&lt;/font&gt; class.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Stack&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;:&lt;br /&gt;    list&amp;lt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;gt; m_list;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;:&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; push(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i);&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; pop();&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; depth() &lt;span style="color: #0000ff"&gt;const&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; empty() &lt;span style="color: #0000ff"&gt;const&lt;/span&gt;;&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;To do that, I can bring up the &amp;quot;New Breakpoint&amp;quot; dialog by pressing CTRL+B as shown below and type in &lt;font face="Courier New"&gt;Stack::*&lt;/font&gt; for the function name, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="New Breakpoint dialog" border="0" alt="New Breakpoint dialog" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/HowtosetaClassBreakpointinVisualStudio20_A2BD/image_9.png" width="588" height="261" /&gt; &lt;/p&gt;

&lt;p&gt;After setting the breakpoint, the Breakpoints window displays the new breakpoint just like any other breakpoint, as shown below.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Breakpoint on all functions" border="0" alt="Breakpoint on all functions" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/HowtosetaClassBreakpointinVisualStudio20_A2BD/image_6.png" width="634" height="230" /&gt; &lt;/p&gt;

&lt;p&gt;As soon as any of the functions in the Stack class are called, the debugger will stop at the function. Also, the Breakpoints window will show the fact that multiple breakpoints were set in the class. In the following screenshot, the function push() was called and the debugger stopped since there was a class breakpoint on the Stack class.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Class Breakpoint" border="0" alt="Class Breakpoint" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/HowtosetaClassBreakpointinVisualStudio20_A2BD/image_12.png" width="590" height="230" /&gt; &lt;/p&gt;

&lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893993" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Troubleshooting common breakpoint problems in the Visual Studio debugger (Part I)</title><link>http://blogs.msdn.com/habibh/archive/2009/09/01/troubleshooting-common-breakpoint-problems-in-the-visual-studio-debugger-part-i.aspx</link><pubDate>Wed, 02 Sep 2009 03:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9898241</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9898241.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9898241</wfw:commentRss><description>&lt;p&gt;On the Visual Studio debugger team, one of the areas where we regularly receive feedback is when breakpoints don't work. Furthermore, some of the error messages that the debugger displays when a breakpoint fails are generic so it might be hard to diagnose why a breakpoint doesn't work correctly (we're working to improve these error messages). In this blog post and subsequent posts, I'm going to cover the most common reasons why breakpoints don't work in the Visual Studio debugger and provide potential workarounds.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When trying to set a breakpoint in a C# or VB method, you see the following error message:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The common language runtime was unable to set the breakpoint.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;Description&lt;/h3&gt;  &lt;p&gt;This error occurs because the application that you are debugging is optimized and the method where you are trying to set the breakpoint has been optimized away and hence, doesn't exist in the running application. This typically happens if your project configuration is set to &lt;strong&gt;Release&lt;/strong&gt; mode which enables the compiler setting to optimize code, as shown below. One way to fix this problem is to set the project configuration to &lt;strong&gt;Debug &lt;/strong&gt;which disables optimizations.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Project Properties" border="0" alt="Project Properties" src="http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/Troubleshootingcommonbreakpointproblemsi_F784/image_3.png" width="805" height="350" /&gt;&lt;/p&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898241" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/habibh/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category></item><item><title>How to debug a 64-bit dump using the Visual Studio debugger</title><link>http://blogs.msdn.com/habibh/archive/2009/08/31/how-to-debug-a-64-bit-dump-using-the-visual-studio-debugger.aspx</link><pubDate>Tue, 01 Sep 2009 04:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897837</guid><dc:creator>habibh</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/habibh/comments/9897837.aspx</comments><wfw:commentRss>http://blogs.msdn.com/habibh/commentrss.aspx?PostID=9897837</wfw:commentRss><description>&lt;p&gt;One of the questions that comes up about debugging dump files is how to debug a dump file that was created from a 64-bit process. The reason why this question comes up is because Visual Studio itself is a 32-bit application and therefore, cannot debug a 64-bit dump file (or process). As a result, the first time that a developer tries to debug a 64-bit dump file, he (or she) typically runs across the following error message:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The 32-bit version of Visual Studio cannot debug 64-bit processes or 64-bit dumps. Please remote debug with the 64-bit version of Visual Studio Remote Debugging Monitor (MSVSMON.exe) instead.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;To fix this problem, before you start debugging the dump file, run the 64-bit version of msvsmon.exe from &lt;em&gt;%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x64&lt;/em&gt;. However, even after doing so, you might see the following error message:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The version of this file is not compatible with the version of Windows you're running. Check you computer's system information to see whether you need an x86 (32-bit) or x64 (64-bit) version of the program, and then contact the software publisher.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Unfortunately, this error is rather confusing and doesn't tell you anything about the root cause. The problem here is that you are running a 32-bit operating system and therefore, cannot run a 64-bit process. Hence, you need a 64-bit operating system to run the 64-bit version of msvsmon.exe.&lt;/p&gt;  &lt;p&gt;To summarize, in order to debug a 64-bit dump in the Visual Studio debugger, the following conditions need to be met:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You need a 64-bit version of Windows&lt;/li&gt;    &lt;li&gt;You need to run the 64-bit version of msvsmon.exe first&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Habib Heydarian.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897837" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/habibh/archive/tags/Debugging/default.aspx">Debugging</category><category domain="http://blogs.msdn.com/habibh/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://blogs.msdn.com/habibh/archive/tags/VSTS+Developing/default.aspx">VSTS Developing</category></item></channel></rss>