Overview
GDB version 7.0 (due September 2009) will be the first public release of gdb to support reverse debugging (the ability to make the program being debugged step and continue in reverse)
Presently, only certain target debugging environments will support reverse debugging. Those targets currently include:
- Native i386-linux ('target record')
- Native amd64-linux ('target record')
- Several remote targets, including:
All of those targets, plus any additional ones in the future, will support a common user interface for reverse debugging in gdb, including the new commands:
-
reverse-continue ('rc') -- Continue program being debugged but run it in reverse
-
reverse-finish -- Execute backward until just before the selected stack frame is called
-
reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
-
reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
-
reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
-
reverse-stepi -- Step backward exactly one instruction
-
set exec-direction (forward/reverse) -- Set direction of execution.
All subsequent execution commands (continue, step, until etc.) will run the program being debugged in the selected direction.
We must use "record" command to record the stack infomation etc. And use "record stop" command to stop recording the stack infomation and so on.