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


Are there instructions or advice to accompany this?

On Mon, Jan 11, 2010 at 12:54 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> 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]