1. A method comprising: receiving navigational debug input from a debugger interface including input to traverse input code in a plurality of modes; in response to receiving the navigational debug input, a) saving state of a program being executed in a corresponding debugger, including creating a child process from a currently executing process, and b) executing a portion of the program, wherein executing the portion of the program comprises suspending the created child process, and continuing to execute the currently executing process; receiving input to reverse execution of the portion of the program; and restoring the saved state of the program, wherein restoring the saved state of the program comprises suspending the currently executing process and activating the suspended child process.