Debugger interface is a very well stereotyped concept in program development tools design. You usually do Step Over, Step Into nested function calls, set breakpoints and analyse the values of interesting variables. But the growth of the hardware power and the decrease of its cost made it possible to ease the programmer burden of debugging her code. One of the most ambitious debugger paradigms is the emulation of backward execution. Here the programmer is allowed to rollback the program state by execution of Back Step commands and analyse the place where the bug occured in a single run. Probably the most prominent of backstepping debuggers is Ocamldebug aimed at debugging programs for Ocaml language.
The implementation of the backstepping debugger is a great challenge, and surely we couldn't miss it.
Thanks to Microsoft SSCLI initiative also known as Rotor we now have the opportunity to enjoy hacking Microsoft for their own money. Just kidding:)
There are two main challenges in this project. First is to cope with an immense amount of code comprising .NET© model. Secondly, we are living without fork system call for doing checkpoints since anyway our primary target platform is MS Windows©.
Also, though the project is far from being finished, we have already employed several novel techniques making our Janus debugger different from the conventional implementations. To mention a few, our checkpointing mechanism triggers minor garbage collection and turns off major one, allowing for phisical(!) disposal of short-time objects' locations. Also, the checkpointing is triggered by the debuggee program itself, which is an easy task when code is being jitted.

Copyright © OOPS Team