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

后端 未结 1 506
野性不改
野性不改 2020-12-23 11:47

I\'m trying to use the reverse debugging features of gdb 7.3.1 on a multi-threaded project (using libevent), but I get the following error:

(gdb) reverse-ste         


        
相关标签:
1条回答
  • 2020-12-23 12:12

    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) next
    49          p[i].id=i;
    (gdb) reverse-next
    47      for (i=0; i<n; i++)
    

    ...

    17      printf("Hello from node %d\n", p->id);
    (gdb) next
    Hello from node 1
    18      return (NULL);
    (gdb) reverse-next
    17      printf("Hello from node %d\n", p->id);
    
    0 讨论(0)
提交回复
热议问题