I’ll start of with a short story, then we can put that into context of IntelliTrace. Around a decade ago, we had a problem in our Sandbox, when I worked as a developer. We had a crash in a Windows Service that would occur every several days. It was serious, so we had my manager, who is a super hardcore developer or was back then – probably still is, a crash specialist with Watson logs, another highly talented developer and my humble self. We spent 4 days in a noisy data center, trying to figure out the problem. We’ll figure out how the problem was eventually solved shortly.
The notion of IntelliTrace is interesting in the fact that it can be collected from any environment, even a customer environment. IntelliTrace affords us that rich DVR like experience. The steps have been defined, however, we can replay unlimited in a debugger – back and forth in code. Furthermore, you may have a code base on your workstation that has moved on from what’s in Production. With a Symbol Server (fancy name for a network file share), Visual Studio simply synchronizes with a snapshot of what that code looked like when it was built via TFS. So, you are not debugging source code on your local workspace. You are in fact retrospectively debugging source code from version control. That’s cool.
For example a tester can collect IntelliTrace from Microsoft Test Manager transparently, in the background as they are testing. If they find a bug, and let’s assume they are doing testing ad-hoc, an IntelliTrace log can automatically get attached to that bug without the tester having to mentally recapture it.
Within Production there are a couple of scenarios. The Production folks can either collect an IntelliTrace log from PowerShell as a simple extractable which is a zip file and then run a few simple commands, and delete the folder to keep things clean thereafter. Or if they have System Center Operations Manager 2012 SP1, they can click on a button and associate that IntelliTrace log with a work item transparently.
In fact if you have an exception, IntelliTrace will take you directly to the offending line of code as shown below, apparently the Service Ticket is not assigned as we can see in the Locals window below because it’s null.
We can play back and forth to figure out the root cause and quickly fix that bug. Whether it’s in Production, Test or Development. We don’t have to waste hours in conversation. The log is simply there, and we can also request video, event logs and so forth and without pressure, feel free to debug on our developer workstations, not noisy data centers.
Going back to my story. We had 4 people working long hours over 4 days in a noisy environment. Feels rather primitive looking back. I took a break from the room and used a printer to look over the code. I’d had enough of looking at monitors. As the printer was printing 100 pages, I played Table Football with some other colleagues as I sipped a Pepsi which are free at Microsoft by the way. Collected the stack of printouts and spent an hour looking through them and found the bug in the printouts quite manually to be frank. Voila – bug found.
I speak from a real world experience as I’ll never forget it as long as my memory serves me well. 4 experts, 4 days in a noisy room. 5 minutes, 1 developer with IntelliTrace, What’s your choice?