IntelliTrace vs. PreEmptive Analytics
IntelliTrace
Visual Studio 2010 introduced an amazing feature: IntelliTrace, which allows for deep debugging experiences inside Visual Studio by collecting an amazing amount of information (basically a stack trace for every call in your code + metadata) and allowing you to use it later to replay how the application was used. With this feature, you could eliminate those “No Repro” bugs! The catch in 2010 was that it was not allowed to be used in production. In Visual Studio 11, that changed, and we can now use it in production: http://msdn.microsoft.com/en-us/library/hh398365(v=vs.110).aspx & http://msdn.microsoft.com/en-us/library/hh440472.aspx.
PreEmptive Analytics
This change in licensing may seem to put IntelliTrace in direct competition with another great tool, PreEmptive Analytics (PA). I’ve mentioned this amazing tool before, and with Visual Studio 11, it is included “in the box”—so there seems to be a conflict brewing—but there isn’t.
Two sides of the same coin
These two tools are both part of the collect information so you can react to it later and fix bugs set, but they have very different use cases. IntelliTrace is specific to the scenario of replaying an application for diagnosis and debugging purposes. It is not meant to be an always-on tool, and it writes to a local file that needs to be collected somehow.
PA, on the other hand, is a tool to always have on. It captures error information but nothing more than the simple Exception + Stack, which is not as useful, detailed, or integrated into VS when compared to IntelliTrace. In addition, PA allows for a lot of analytics on my application that are not possible in IntelliTrace:
- What features are people using?
- Where in the world are they?
- When are they using it?
- What are their machines like?
In addition, PA reports get automatically sent to a server (one that they run or that you can run if you have privacy/security concerns), so there’s no need to wander around collecting files.
I can also see scenarios where these two work hand in hand—PreEmptive gathering higher-level info that shows many users having issue X, then support reaching out to some users and doing a more detailed capture of the issue with IntelliTrace.