This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: GDB record patch 0.1.1 for GDB-6.6 release (It make I386 and MIPS GDB support Reversible Debugging)
- From: Michael Snyder <msnyder at specifix dot com>
- To: Tea <teawater at gmail dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Mon, 26 Nov 2007 11:12:25 -0800
- Subject: Re: GDB record patch 0.1.1 for GDB-6.6 release (It make I386 and MIPS GDB support Reversible Debugging)
- References: <daef60380711220113p4c8de466j1beff41472932786@mail.gmail.com>
Teawater,
I just want to acknowledge your contribution. I've noticed your
postings, just have not had time to sit down and pore over them.
I am very interested in what you are doing, and I hope that I or
another maintainer can take the time to look it over soon -- hard
to make promises, since it is rather different from anything
that most of us are actively engaged on.
Cheers,
Michael
On Thu, 2007-11-22 at 17:13 +0800, Tea wrote:
> Hi everybody,
>
> GDB record patch disassemble the instruction that will be executed to
> get which memory and register will be changed and record them to
> record all the program running message.
> The main change of this version record patch is support the I386
> instructions(System call, floating-point instructions and SSE
> instructions are still not support).
> The work of next stage is make GDB record patch support I386-Linux system call.
> Please give me your thought about the "record" and help me test it.
> Thanks a lot.
> BTW, I am sorry I compress the patch because it is too big to send to
> the maillist.
>
> To make and install the GDB record patch 0.1.1 with GDB-6.6:
> tar vxjf gdb-6.6.tar.bz2
> bunzip2 gdb-6.6-record-0.1.1.patch.bz2
> patch -p0 < gdb-6.6-record-0.1.1.patch
> mkdir bgdb
> cd bgdb
> ../gdb-6.6/configure
> make
> make install
>
> The following is how to use the record:
> cat 1.c
> int a = 0;
> int
> cool ()
> {
> a += 3;
>
> return (a);
> }
> int
> main()
> {
> int b = 0;
> int c = 1;
>
> b = cool ();
>
> c += 1;
> a -= 2;
>
> return (0);
> }
> gcc -g 1.c
> gdb a.out
> GNU gdb 6.6
> Record 0.1.1
> Copyright (C) 2006 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...
> Using host libthread_db library "/lib/tls/libthread_db.so.1".
> Setting up the environment for debugging gdb.
> Function "internal_error" not defined.
> Make breakpoint pending on future shared library load? (y or [n])
> [answered N; input not from terminal]
> Function "info_command" not defined.
> Make breakpoint pending on future shared library load? (y or [n])
> [answered N; input not from terminal]
> /home/xxx/rec/bgdb/gdb/.gdbinit:8: Error in sourced command file:
> No breakpoint number 0.
> (gdb) b main
> Breakpoint 1 at 0x8048331: file 1.c, line 12.
> (gdb) r
> Starting program: /home/xxx/rec/bgdb/gdb/a.out
>
> Breakpoint 1, main () at 1.c:12
> 12 int b = 0;
> (gdb) p a
> $1 = 0
> (gdb) p b
> During symbol reading, incomplete CFI data; unspecified registers
> (e.g., eax) at 0x8048324.
> $2 = 134513500
> (gdb) p c
> $3 = 7610400
> (gdb) rec
> record: record and reverse function is started.
> (gdb) n
> 13 int c = 1;
> (gdb)
> 15 b = cool ();
> (gdb)
> 17 c += 1;
> (gdb) p a
> $4 = 3
> (gdb) p b
> $5 = 3
> (gdb) p c
> $6 = 1
> (gdb) n
> 18 a -= 2;
> (gdb)
> 20 return (0);
> (gdb) p a
> $7 = 1
> (gdb) p b
> $8 = 3
> (gdb) p c
> $9 = 2
> (gdb) rev
> record: GDB is set to reverse debug mode.
> (gdb) s
> 18 a -= 2;
> (gdb)
> 0x0804834a 17 c += 1;
> (gdb) p a
> $10 = 3
> (gdb) p b
> $11 = 3
> (gdb) p c
> $12 = 1
> (gdb) s
> 0x08048344 15 b = cool ();
> (gdb) s
> cool () at 1.c:5
> 5 a += 3;
> (gdb) p a
> $13 = 0
> (gdb) s
> 0x08048311 4 {
> (gdb)
> main () at 1.c:15
> 15 b = cool ();
> (gdb)
> 13 int c = 1;
> (gdb) p a
> $14 = 0
> (gdb) p b
> $15 = 0
> (gdb) p c
> $16 = 7610400
> (gdb) rev
> record: GDB is set to normal debug mode.
> (gdb) n
> 15 b = cool ();
> (gdb)
> 17 c += 1;
> (gdb) n
> 18 a -= 2;
> (gdb) p a
> $4 = 3
> (gdb) p b
> $5 = 3
> (gdb) p c
> $6 = 2
> (gdb) quit
> The program is running. Exit anyway? (y or n) y
> record: record and reverse function is stopped.
> You can find out the change of the values of "a", "b" and "c" when the
> GDB normal debug and reverse debug.
>
> Thanks,
> teawater
>
>
> Signed-Off-By: Teawater Zhu <teawater@gmail.com>