Geeks With Blogs

News Opinions and articles on this blog are mine alone and do not represent my employer. All articles and blog entries are posted using a personal computer system outside of my employer network.
Sam Abraham Software Engineer/Architect: Putting Customers First

IntelliTrace is a new feature in Visual Studio 2010 Ultimate Edition. I see this valuable tool as a “Program Execution Recorder” that captures information about events and calls taking place as soon as we hit the VS2010 play (Start Debugging) button or the F5 key. Many online resources already discuss IntelliTrace and the benefit it brings to both developers and testers alike so I see no value of just repeating this information. 

In this brief blog entry, I would like to share with you how I will be using IntelliTrace in my upcoming talk at the Ft Lauderdale ArcSig .Net User Group Meeting on April 20th 2010 (check http://www.fladotnet.com for more information), as a learning tool to demonstrate the internals of the lifecycle of an MVC2 application.  I will also be providing some helpful links that cover IntelliTrace in more detail at the end of my article for reference. UPDATE: I am also including a video of Scott Hanselman using the VS2010 "Call Stack" to showcase MVC  in DevDays 2010.

IntelliTrace is setup by default to only capture execution events. Microsoft did such a great job on optimizing its recording process that I haven’t even felt the slightest performance hit with IntelliTrace running as I was debugging my solutions and projects.  For my purposes here however, I needed to capture more information beyond execution events, so I turned on the option for capturing calls in addition to events as shown in Figures 1 and 2. Changing capture options will require us to stop our debugging session and start over for the new settings to take place.


Figure 1 – Access IntelliTrace options via the Tools->Options menu items


Figure 2 – Change IntelliTrace Options to capture call information as well as events

Notice the warning with regards to potentially degrading performance when selecting to capture call information in addition to the default events-only setting. I have found this warning to be sure true. My subsequent tests showed slowness in page load times compared to rendering those same exact pages with the “event-only” option selected.

Execution recording is auto-started along with the new debugging session of our project. At this point, we can simply interact with the application and continue executing normally until we decide to “playback” the code we have executed so far.  For code replay, first step is to “break” the current execution as show in Figure 3.


 
Figure 3 – Break to replay recording

A few tries later, I found a good process to quickly find and demonstrate the MVC2 page lifecycle.
First-off, we start with the event view as shown in Figure 4 until we find an interesting event that needs further studying. 


Figure 4 – Going through IntelliTrace’s events and picking as specific entry of interest

We now can, for instance, study how the highlighted HTTP GET request is being handled, by clicking on the “Calls View” for that particular event. Notice that IntelliTrace shows us all calls that took place in servicing that GET request. Double clicking on any call takes us to a more granular view of the call stack within that clicked call, up until getting to a specific line of code where we can do a line-by-line replay of the execution from that point onwards using F10 or F11 just like our typical good old VS2008 debugging helped us accomplish.


Figure 5 – switching to call view on an event of interest


Figure 6 – Double clicking on call shows a more granular view of the call stack.

In conclusion, the introduction of IntelliTrace as a new addition to the VS developers’ tool arsenal enhances development and debugging experience and effectively tackles the “no-repro” problem. It will also hopefully enhance my audience’s experience listening to me speaking about  an MVC2 page lifecycle which I can now easily visually demonstrate, thereby improving the probability of keeping everybody awake a little longer.

IntelliTrace References:
http://msdn.microsoft.com/en-us/magazine/ee336126.aspx
http://msdn.microsoft.com/en-us/library/dd264944(VS.100).aspx

UPDATE: Scott Hanselman using the VS2010  "Call Stack" to showcase MVC:

http://channel9.msdn.com/posts/matthijs/ASPNET-MVC-2-Basics-Introduction-by-Scott-Hanselman/

 

 

Posted on Thursday, April 15, 2010 8:28 PM Fladotnet.com , Tech Talk , VS2010 , MVC2 , IntelliTrace | Back to top


Comments on this post: UPDATED: IntelliTrace As a Learning Tool for MVC2 in a VS2010 Project

Comments are closed.
Comments have been closed on this topic.
Copyright © Sam Abraham | Powered by: GeeksWithBlogs.net