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..
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.