Visual Studio 2010 has one great feature. I works like this (I simplified a little): you turn on debugging, wait for program to crash, load debugging log and you can walk through state of each variable in program, go back and forward in time – almost like working on live machine.
Of course, this is only available in most expensive version of Visual Studio – Ultimate. Buyers of all other version can just drool. I know I will.