This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Reverse Debugging Headaches


On Mon, 11 Jan 2010 19:47:13 +0100, Michael Snyder wrote:
> Sean Soria wrote:
> >Whenever I try to reverse debug I break into the program, set target
> >record and then continue. I immediately hit some sort of simd
> >instruction (in things like strlen in libc) or unsupported ioctl call.
> > Is there any way around these issues?
> 
> Shouldn't happen.  What version gdb?  What linux?

gdb 7.0.50.20100111-cvs Fedora 12:

kernel-2.6.32.1-9.fc13.x86_64 -> x86_64 gdb -> x86_64 inferior:
(gdb) start
Temporary breakpoint 1 at 0x400640: file threadit.c, line 40.
Starting program: /home/jkratoch/t/threadit 
[Thread debugging using libthread_db enabled]
Temporary breakpoint 1, main () at threadit.c:40
40	  i = pthread_create (&thread1, NULL, start, NULL);	/* create1 */
(gdb) record
(gdb) c
Continuing.
warning: Process record ignores the memory change of instruction at address 0x362de0db46 because it can't get the value of the segment register.
[...]
warning: Process record ignores the memory change of instruction at address 0x362e274d46 because it can't get the value of the segment register.
Process record doesn't support instruction 0xf6e at address 0x362e281a32.
Process record: failed to record execution log.
[Thread 0x7ffff7fe3700 (LWP 26985)] #1 stopped.
memset () at ../sysdeps/x86_64/memset.S:746
746		 movd   %rdx,%xmm0
(gdb) 

kernel-2.6.32.1-9.fc13.x86_64 -> x86_64 gdb -> i386 inferior:
(gdb) start
Temporary breakpoint 1 at 0x80484f4: file /home/jkratoch/t/threadit.c, line 40.
Starting program: /home/jkratoch/t/threadit32 
warning: .dynamic section for "/lib/libc.so.6" is not at the expected address
warning: difference appears to be caused by prelink, adjusting expectations
[Thread debugging using libthread_db enabled]
Temporary breakpoint 1, main () at /home/jkratoch/t/threadit.c:40
40	  i = pthread_create (&thread1, NULL, start, NULL);	/* create1 */
(gdb) record 
(gdb) c
Continuing.
warning: Process record ignores the memory change of instruction at address 0x18a7c5 because it can't get the value of the segment register.
Cannot find user-level thread for LWP 11809: generic error
(/lib/libpthread-2.11.so has been prelinked to avoid some existing bug)

kernel-2.6.32.1-9.fc13.x86_64 -> i386 gdb -> i386 inferior:
(gdb) start
Temporary breakpoint 1 at 0x80484f4: file /home/jkratoch/t/threadit.c, line 40.
Starting program: /home/jkratoch/t/threadit32 
[Thread debugging using libthread_db enabled]
Temporary breakpoint 1, main () at /home/jkratoch/t/threadit.c:40
40	  i = pthread_create (&thread1, NULL, start, NULL);	/* create1 */
(gdb) record 
(gdb) c
Continuing.
warning: Process record ignores the memory change of instruction at address 0x3557c5 because it can't get the value of the segment register.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
The program no longer exists.
(gdb) 


#include <pthread.h>
#include <assert.h>
#include <unistd.h>

static volatile int var;

static void *start (void *arg)
{
  sleep (1);
  return arg;
}

int main (void)
{
  pthread_t thread1;
  int i;

  i = pthread_create (&thread1, NULL, start, NULL);
  assert (i == 0);
  i = pthread_join (thread1, NULL);
  assert (i == 0);

  return 0;
}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]