How do I enable reverse debugging on a multi-threaded program? How do I enable reverse debugging on a multi-threaded program? multithreading multithreading

How do I enable reverse debugging on a multi-threaded program?


To do this, you need to activate the instruction-recording target, by executing the command

record

from the point where you want to go forward and backward (remember that the recording will significantly slow down the execution, especially if you have several threads!)

I've just checked that it's working correctly:

(gdb) info threads   Id   Target Id         Frame   2    Thread 0x7ffff7860700 (LWP 5503) "a.out" hello (arg=0x601030) at test2.c:16* 1    Thread 0x7ffff7fca700 (LWP 5502) "a.out" main (argc=2, argv=0x7fffffffe2e8) at test2.c:47

...

(gdb) next49          p[i].id=i;(gdb) reverse-next47      for (i=0; i<n; i++)

...

17      printf("Hello from node %d\n", p->id);(gdb) nextHello from node 118      return (NULL);(gdb) reverse-next17      printf("Hello from node %d\n", p->id);