binutils-gdb/gdb/testsuite/gdb.reverse
Bruno Larsen e24d337e21 gdb: add 'maintenance print record-instruction' command
While chasing some reverse debugging bugs, I found myself wondering what
was recorded by GDB to undo and redo a certain instruction. This commit
implements a simple way of printing that information.

If there isn't enough history to print the desired instruction (such as
when the user hasn't started recording yet or when they request 2
instructions back but only 1 was recorded), GDB warns the user like so:

(gdb) maint print record-instruction
Not enough recorded history

If there is enough, GDB prints the instruction like so:

(gdb) maint print record-instruction
4 bytes of memory at address 0x00007fffffffd5dc changed from: 01 00 00 00
Register eflags changed: [ IF ]
Register rip changed: (void (*)()) 0x401115 <main+15>

Approved-by: Eli Zaretskii <eliz@gnu.org>
Reviewed-by: Alexandra Hajkova <ahajkova@redhat.com>
Reviewed-by: Lancelot Six <lsix@lancelotsix.com>
Approved-by: Tom Tromey <tom@tromey.com>
2023-01-04 11:21:57 +01:00
..
amd64-tailcall-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
amd64-tailcall-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
amd64-tailcall-reverse.S Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
break-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
break-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
break-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
consecutive-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
consecutive-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
consecutive-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
finish-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
finish-reverse-bkpt.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
finish-reverse-bkpt.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
finish-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
finish-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
fstatat-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
fstatat-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
getrandom.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
getrandom.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
getresuid-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
getresuid-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i386-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i386-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i386-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i386-sse-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i386-sse-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i387-env-reverse.c
i387-env-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
i387-stack-reverse.c
i387-stack-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
insn-reverse-aarch64.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
insn-reverse-arm.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
insn-reverse-x86.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
insn-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
insn-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
machinestate-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
machinestate.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
machinestate.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
maint-print-instruction.c gdb: add 'maintenance print record-instruction' command 2023-01-04 11:21:57 +01:00
maint-print-instruction.exp gdb: add 'maintenance print record-instruction' command 2023-01-04 11:21:57 +01:00
ms1.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
next-reverse-bkpt-over-sr.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
next-reverse-bkpt-over-sr.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
pipe-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
pipe-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
ppc_record_test_isa_2_06.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
ppc_record_test_isa_2_06.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
ppc_record_test_isa_3_1.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
ppc_record_test_isa_3_1.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
readv-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
readv-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
recvmsg-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
recvmsg-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
rerun-prec.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
rerun-prec.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
s390-mvcle.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
s390-mvcle.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
shr.h Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
shr1.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
shr2.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
sigall-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
sigall-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
sigall-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
singlejmp-reverse-nodebug.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
singlejmp-reverse-nodebug.S Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
singlejmp-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
singlejmp-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
singlejmp-reverse.S Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
solib-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
solib-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
solib-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
step-indirect-call-thunk.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
step-indirect-call-thunk.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
step-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
step-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
step-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
test_ioctl_TCSETSW.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
test_ioctl_TCSETSW.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
time-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
time-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
until-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
until-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
until-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
ur1.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
waitpid-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
waitpid-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
watch-precsave.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
watch-reverse.c Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00
watch-reverse.exp Update copyright year range in header of all files managed by GDB 2023-01-01 17:01:16 +04:00