Inside TFS

IntelliTrace Moves Beyond Development in Visual Studio 11

IntelliTrace can only be used in development environments in Visual Studio 2010 but that changes in the upcoming IDE. Learn how to use the new IntelliTrace in Production features in the Visual Studio 11 Developer Preview.

IntelliTrace  is a debugging feature that allows you to capture application state information during execution. This means, if a bug is found, you can see details of the application execution, effectively eliminating the “no repro” bug scenario. The IntelliTrace log files enable you to “step back in time” during the program execution, to examine stack trace and event information, or to click on an exception and drill down directly to the buggy code.  Introduced with Visual Studio 2010 Ultimate, IntelliTrace is a huge step forward in debugging applications.

Unfortunately, one of the major drawbacks to IntelliTrace is it can only be used in development environments, not in production.  However, that changes in the next version of Visual Studio. With Visual Studio 11, use of IntelliTrace in a production setting is now supported. 

Running IntelliTrace on the Production Server
As an example, let’s assume I have a production Web site that throws an error when a specific link is clicked. I’ve tried to recreate this error in the development environment, but have been unsuccessful. IntelliTrace in production allows me to collect extensive debug information, on the production application, while it is running, which I can then use to solve the problem.

The first step is to extract the IntelliTrace files onto the production server. All the IntelliTrace files are kept in a .CAB file named IntelliTraceCollection.cab. This file is found at c:\Program Files (x86)\Microsoft Visual Studio 11.0\Team Tools\TraceDebugger Tools. To extract the files, use a command prompt:

Expand  IntelliTraceCollection.cab –F:*.* C:\IntelliTrace 

Otherwise, the file structure needed will not be maintained. Figure 1 shows a screenshot of the unpacked files.


[Click on image for larger view.]
Figure 1. IntelliTrace Files on the Production Server

With the IntelliTrace files on the production server, the next step is to “turn on” IntelliTrace. To do that in production, I have to run a PowerShell script. Open a PowerShell window, and import the IntelliTrace code using the following command:

Import-Module  c:\IntelliTrace\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll

Once this DLL is imported, run Get-Help *IntelliTrace* to see a list of the available IntelliTrace commands, shown in Figure 2.  I can use the Get-Help Start-IntelliTraceCollection method to retrieve detailed information on a specific command.


[Click on image for larger view.]
Figure 2. IntelliTrace PowerShell Commands
Collecting Execution Information
To start collecting information on my Web application, I use the Start-IntelliTraceCollection command:

Start-IntelliTraceCollection “FabrikamFiber.Extranet.Web”   
C:\IntelliTraceLogsc:\IntelliTrace\collection_plan.ASP.NET.trace.xml

This command requires the IIS application pool I want to monitor, a location to store the IntelliTrace .iTrace file, and the collection plan information. In the previous command, I am going to monitor the FabrikamFiber.Extranet.Web application pool, and store my IntelliTrace files in the c:\IntelliTraceLogs folder. Remember: the iTrace file can grow quickly and become very large, so make sure there is enough free space available for the file.

At this point IntelliTrace is enabled, running and collecting execution information for the application pool. If I want to know the current collection status, I can run the Get-IntelliTraceCollectionStatus method, shown in Figure 3.


[Click on image for larger view.]
Figure 3. IntelliTrace Collection Status Information

When I’ve finished collecting the IntelliTrace information, I can stop the collection process using the following command:

Stop-IntelliTraceCollection<AppPoolName>

As a best practice, I shouldn’t leave IntelliTrace running any longer than necessary. However, if I need to look at the data captured so far, without stopping the collection process, I can use the Checkpoint-IntelliTraceCollection PowerShell command.  This makes a copy of the .iTrace file at that particular point in time.  I can then take the .iTrace file and analyze it in Visual Studio, while IntelliTrace continues to gather information.

Once I have the IntelliTrace log file from the production system, I can open it in Visual Studio for analysis. For more information, see Debugging Applications with IntelliTrace.

IntelliTrace in production provides yet another tool to allow developers to solve those hard-to-reproduce bugs, resulting in faster bug fixes and less time spent trying to reproduce bugs.

About the Author

Mickey Gousset spends his days as a principal consultant for Infront Consulting Group. Gousset is lead author of "Professional Application Lifecycle Management with Visual Studio 2012" (Wrox, 2012) and frequents the speaker circuit singing the praises of ALM and DevOps. He also blogs at ALM Rocks!. Gousset is one of the original Team System/ALM MVPs and has held the award since 2005.

comments powered by Disqus

Featured

  • VS Code 1.123 Adds Agent Session Sync, 1M Context Windows

    Microsoft released Visual Studio Code 1.123 on June 3, adding agent-focused features, larger model context support, integrated browser updates and a new delay for some automatic extension updates.

  • Copilot Billing Shock Hits Developers

    Developer complaints about GitHub Copilot's new usage-based billing model have centered on unexpectedly rapid AI credit consumption, and neither GitHub nor Microsoft has responded directly to the backlash, though they have previously published guidance to lessen model usage costs.

  • Hands On with GitHub Copilot App Technical Preview: Turning a Blazor Issue into a PR

    GitHub's brand-new Copilot desktop app, in technical preview, handled a small Blazor issue from planning through pull request creation, but the hands-on test also showed why developers still need to verify agent work in the running app before merging.

  • At Build 2026, Microsoft Sets Up Windows as an OS for AI Agents

    Microsoft's Build 2026 Windows developer announcements point to a broader platform strategy for agentic AI, spanning terminal workflows, local models, app-building skills, Cloud PCs and operating system-level containment.

Subscribe on YouTube