(編集:現在の「トリック」の下の最初の回答によると、Atomプロセッサを使用しているようです。しかし、これが根本的な制限であるか、または他のプロセッサのサポートを追加することがロードマップにあるかどうかについて、gdbの第一人者が答えてくれることを願っています。)
私の環境では逆実行が機能しているようです。
(gdb) start
...Temporary breakpoint 5 at 0x8048460: file bang.cpp, line 13.
Starting program: /home/thomasg/temp/./bang
Temporary breakpoint 5, main () at bang.cpp:13
13 f(1000);
(gdb) record
(gdb) continue
Continuing.
Breakpoint 3, f (d=900) at bang.cpp:5
5 if(d) {
(gdb) info record
Active record target: record-full
Record mode:
Lowest recorded instruction number is 1.
Highest recorded instruction number is 1005.
Log contains 1005 instructions.
Max logged instructions is 200000.
(gdb) reverse-continue
Continuing.
Breakpoint 3, f (d=901) at bang.cpp:5
5 if(d) {
(gdb) record goto end
Go forward to insn number 1005
#0 f (d=900) at bang.cpp:5
5 if(d) {
ただし、命令と関数の履歴は利用できません。
(gdb) record instruction-history
You can't do that when your target is `record-full'
(gdb) record function-call-history
You can't do that when your target is `record-full'
利用可能な唯一のターゲット タイプは full であり、他の文書化されたタイプ「btrace」は「ターゲットはブランチ トレースをサポートしていません」で失敗します。
したがって、このターゲットではサポートされていない可能性が非常に高いですが、これは主流の最新のターゲット (gdb 7.6.1-ubuntu、amd64 Linux Mint「Petra」で「Intel(R) Core(TM) i5-3570」を実行) であるためです。 ) 重要なステップまたは構成を見落としていたらいいのにと思いますか?