There are a few things that take a bit of poking at to get the hang of but once you learn the twists and turns of where to configure everything the technology does work exceptionally well. And this is on Beta 1!!!
The settings for the historical debugger are found within the Visual Studio options off of the Tools –> options menu selection. Scroll down until you see the root level Historical Debugging menu as shown in the screenshot below. Most of the options are reasonably straight forward. On the General settings tab is the option to enable or disable Historical Debugging as well as the option of how much information to track. The default settings enable Historical Debugging and track events only. To really see the power of Historical Debugging select the Events, Methods and Parameters option.

To test these features I have created a simple sample application using a single project that compiles to one assembly, however this process works just as well with larger applications that consist of multiple assemblies. Once you have set the options to meet your needs run your application. To demonstrate some of the interesting aspects my application creates a simple data transfer object in the UI class that is populated from user supplied data, passes the object to a controller class that then passes the object to a validation method on another class and based on the validation results passes the object to a data access layer for persistence. Not an uncommon scenario in a simple business application.
Running my application I enter and submit data however after I click the Save button all of the input textboxes are cleared. The application should have populated the fields with the values of the object after saving but instead a null reference exception is thrown and caught by Visual Studio.

The screenshot shows Visual Studio after it has caught the breakpoint. The Debug History window is displayed. The default view shows the significant events that the historical debugger has tracked ending with the Exception event that was thrown, the break that the debugger implemented and finally the option to return to the live debugging session. To view the details of the methods and parameters rather than just the events click the icon second from the left on the debugging window toolbar (Show Tree View).
A couple of things to note is the view of the call stack in the Historical Debugging window. The last entry in the window shows that the Person parameter that was passed to the DisplayPerson method was null. On the code editor window you can see the navigation gutter that displays the VCR style controls for navigating back through the code. Using the navigation controls we can navigate up the call stack to the point where we call the Controller.SavePerson method. From here we can step into the SavePerson method and inspect that values of the properties of the Person object that was supplied to the method. We can use the navigation icons in the gutter or the typical debug step commands (step into, step over, etc) to navigate about our code to determine what the problem is and where it occurred, all without restarting our application. There is no need to set breakpoints within the application to start a fresh debug session to find where the problem is, the Historical Debugger takes care of everything for us as we ran through the application the first time.This is a great time saver that will make debugging problems much faster and easier. In my next post I will demonstrate how to leverage the new testing tools to capture historical debug logs that can then be passed from a tester to a developer to determine exactly what values were supplied by the tester as well as the exact path that they took through the code.











Continue adding the rest of the roles identified in your user stories as actors to the model.