"Target record-full" in gdb bewirkt, dass der Befehl "n" auf printf mit "Process record unterstützt die Anweisung 0xc5 an der Adresse 0x7ffff7dee6e7 nicht" fehlschlägt?

Ich habe versucht, den Befehl "reverse-step" und "reverse-next" in gdb zu verwenden. Der Stapelüberlauf teilt mir mit, dass ich "target record-full" in dem Ausführungskontext ausführen soll, in dem ich "rn" und "rs" ausführen möchte. Aber ein seltsamer Fehler ist passiert:

  1 
  2 #include<stdio.h>
  3 int i=0;
  4 void fa()
  5 { 
  6   ++i;
  7   printf("%d\n",i);
  8   ++i;
  9 }
 10 int main(){
 11   fa();
 12   return 0;
 13 } 

Ich kompiliere und starte dieses Programm:

(gdb) b 4
Breakpoint 1 at 0x40052a: file test02.c, line 4.
(gdb) r
Starting program: /home/Troskyvs/a.out 

Breakpoint 1, fa () at test02.c:6
6     ++i;
(gdb) target record-full
(gdb) n
7     printf("%d\n",i);
(gdb) n                      # Error happens here!
Process record does not support instruction 0xc5 at address 0x7ffff7dee6e7.
Process record: failed to record execution log.

Program stopped.
_dl_runtime_resolve_avx () at ../sysdeps/x86_64/dl-trampoline.h:81
81  ../sysdeps/x86_64/dl-trampoline.h: No such file or directory.

Nun, wenn ich nicht "target record-full" ausführe, ist das 2. "n" OK und führt zur nächsten Zeile. Ich erhalte die Fehlerinformationen hier nicht ganz.

Hat es mit "Zielsatz voll" zu tun? Wie kann ich es erobern?

Ich habe einen anderen Ansatz versucht:

(gdb) set exec-direction reverse
(gdb) n

No more reverse-execution history.
fa () at test02.c:7
7     printf("%d\n",i);
(gdb) n

No more reverse-execution history.
fa () at test02.c:7
7     printf("%d\n",i);
(gdb) n

Nun, es funktioniert nicht

Antworten auf die Frage(4)

Ihre Antwort auf die Frage