debugginggdb

How to go to the previous line in GDB?


Is it possible in gdb to go to a line before the currently executing line. e.g:

void my_fun( somePtrType** arr, int start, int end)
{
  // arr is an array of pointers to somePtrType
  //line a
  ... some assignments
  swap(&arr[ind1] , &arr[ind2]) ;
  //line b (current line)
}

I am at line b currently and can examine the arr values there but I want to go back to line a and examine the contents of arr at that time.

I think it might not be possible because a debugger can run a code in slow motion,but can't make it execute backwards.
Any more insights..


Solution

  • Yes! With the new version 7.0 gdb, you can do exactly that!

    The command would be "reverse-step", or "reverse-next".

    You can get gdb-7.0 from ftp.gnu.org:/pub/gnu/gdb

    If you run into the error: Target child does not support this command. then try adding target record at the beginning of execution, after starting run.

    Edit: Since GDB 7.6 target record is deprecated, use target record-full instead.