As you probably already know, Visual Studio Ultimate offers an enhanced live debugging experience (F5 or Attach) through the use of IntelliTrace. Your application’s execution is recorded by IntelliTrace and you can navigate through time, both backwards and forwards, and examine your code as you normally would during a debugging session by interacting with the Locals and Call Stack windows. Since there is a balance to be found between the performance of the application and the verbosity of the debugging information, we give you two options to choose from:
- Low (verbosity) mode: You pick the list of events that you are interested in (in VS settings this is labelled “IntelliTrace events only”)
- High (verbosity) mode: Low mode information + method calls (in VS settings this is labelled “IntelliTrace events and call information”)
Once your desktop application is deployed to a client machine or your web application is deployed to a server, you can no longer debug your application using F5 nor can you attach with the debugger.
One solution to this problem is to take snapshots of your application as it is running on the remote machine, in the form of dump files, and transfer them to your own machine where you can examine them using Visual Studio. The drawback of this approach is that with every snapshot you only get a glimpse of the application's execution history and you better hope you took this glimpse at the right moment in time (or take many of them).
The standalone IntelliTrace collector provides a more practical alternative to remote debugging an application in production. Using the collector you can record the execution of your application on a remote machine by saving it into an .itrace file and playing it back on your local development machine with Visual Studio. Debugging your application via the .itrace file is as close to live debugging as possible.
The best way to think of your two options, dump files and the standalone IntelliTrace collector, is to think of the differences between snapping a picture and recording a video. If that sounds so great you can't even wait until the end of this article to try it out, see if your type of application is supported, download the collector and follow these instructions to get started.
With the release of Visual Studio 2013 we took away the option to download the standalone IntelliTrace collector in lieu of Microsoft Monitoring Agent. MMA monitors computer infrastructure and application health and although it is part of System Center Operations Manager, it can also be used in standalone mode. Once the MMA agent is installed on the remote machine it collects diagnostic data, such as performance metrics, event logs, and traces. You can use PowerShell commands to start and stop monitoring and collect IntelliTrace logs from applications just as you would with the standalone IntelliTrace collector. Although MMA did not take away any functionality, it does not support x-copy deployment, instead it requires a setup to be run on the remote machine which is often a big hurdle, especially for pre-production and production machines. In addition, the size of the installer was not as compact as the 2MB standalone IntelliTrace collector cab.
With the release of Visual Studio 2013 Update 3 and as a result of listening to your valuable feedback we have brought back the standalone IntellITrace collector as its own separate download. So now you have a choice to collect IntelliTrace files as part of MMA standalone, or System Center, or AppInsights, or just with the standalone IntelliTrace collector.
We are always looking for feedback and comments for our features. Please send us a tweet or visit the MSDN Diagnostics forums.