I’ve played a little bit with Visual Studio 2010, trying out the automated web UI tests, but I have found a feature that became quickly my favorite from the VS20010 feature list. This is the historical debugger.
The idea is easy: the IDE collects and stores information about the debugged application (important events, called methods, parameters, (handled) exceptions, etc.) that allows you later to jump back in time, and check what happened before you have actually run into a problem that you want to fix. You can walk through the execution steps and review when the things went wrong. (The experience is a little bit similar like the call stack window, but here you are not constrained to the callers and you can get much more information about the executed methods.)
Of course nothing is for free, the application will be slower with this historical debugger, but MS addressed this problem, and you can fine-tune the information to be collected (or even switch it off), and you can also limit the size of the collected data (it always keeps the last part of it, so when you break the execution the information that is relevant to the experienced problem will be most likely still available).