Geeks With Blogs
Mickey Gousset Microsoft System Center

As I mentioned in a previous blog post, I’ll be speaking on IntelliTrace at Tech Ed 2001 – North America. This blog post is the first in a series that I’ll publish as I delve into IntelliTrace in more detail, in preparation for my talk.

IntelliTrace is enabled by default in Visual Studio 2010 Ultimate, but it is configured so as to only capture some basic information, so as to not impact application performance.  I thought a good starting point would be to look and see what the different configuration options for IntelliTrace are.

To access the IntelliTrace options in Visual Studio 2010 Ultimate, select Tools | Options. This will open the Options window.  Scroll down until you see the IntelliTrace node.  Expand the IntelliTrace node and select General.


The General tab is where you can enable/disable IntelliTrace by checking/unchecking the Enable IntelliTrace checkbox.  By default, the checkbox is checked, indicating that IntelliTrace is turned on.

You have two options for collecting IntelliTrace information:

  • IntelliTrace events only – Selecting this radio button tells IntelliTrace to only collect information related to IntelliTrace events.  This is the default mode, and the one that has a minimal effect on performance.
  • IntelliTrace events and call information – Selecting this radio button tells IntelliTrace to collect both event information, and call stack information.  The call stack information can include method names, method parameters, and return values.  As you can imagine, depending on the amount of information collected, this can lead to performance issues with the application.


The image above shows the two warning messages that appear if you select IntelliTrace events and call information. The first is a general warning that the change you have made will not take effect until the next debugging session.  The second warnings lets you know that Edit and Continue is disabled when collecting Call Information, so if you like to use Edit and Continue, you can’t collect Call Information.


The Advanced tab allows you to control some of the more advanced options around IntelliTrace.  Whenever IntelliTrace runs, it creates a .iTrace file.  These files are deleted when you close Visual Studio.  The Advanced tab can be used to set the location of the files, as well as the maximum file size.

There are also three checkbox options on this screen:

  • Display the navigation gutter while in debug mode – The navigation gutter is a control that we will look at in a future post, that can be used for navigating through your code and the IntelliTrace data.
  • Enable Team Foundation Server symbol path lookup – If you have an iTrace file that is configured with the correct Team Build information, then when this box is checked, IntelliTrace can automatically pull down the PDB files for the build related to this IntelliTrace iTrace file.
  • Prompt to enable source server support – If this box is checked, then when you open an IntelliTrace iTrace file that has PDBs that support source server lookup, you will be prompted, asking if you want to use them or not.


The IntelliTrace Events tab is used to configure what events debug information will be collected on.  You have the ability to enable blocks of events, or individual events.  Consider carefully what events you enable, as you do not want to cause any more performance degradation than is necessary.


Finally, the last tab is the Modules tab.  This tab allows you to control what modules you collect information over.  If you collected information over EVERYTHING, then you would build up way too much data, and would be pretty much overwhelmed.  This tab allows you to exclude certain modules, or only include certain modules, allowing you to tailor your debugging efforts.  By default, all the Microsoft .NET binaries are blocked.

So, in touring through these options, I need to play with IntelliTrace for both just event collecting, as well as event and call collecting.  I may or may not want to play around with Team Build, to see how it pulls down the PDBs automatically.  And I’ll definitely want to enable some more IntelliTrace events for some of my examples.  I’m a big fan of creating simple console applications for my demos, so I suspect I’ll be turning on some of the console events.  And to wrap things up, I should also play with the inclusion/exclusion of modules.

Ok, now I have a gameplan.  Next, I’m going to create a simple console application and do some “IntelliTracing” on it.

Posted on Tuesday, April 5, 2011 8:35 AM | Back to top

Comments on this post: Exploring IntelliTrace Part 1 – IntelliTrace Options

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Mickey Gousset | Powered by: