(gdb) reverse-step
Target child does not support this command.
这是在 Linux 2.6.18 中
内核不支持吗?我需要一个特殊的 gcc arg 吗?
gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)
我不是专家,但看来您可能忘记启用 gdb 记录了。
(gdb) record
(gdb) continue
(gdb) reverse-continue
Continuing.
例如,这对我有用
Breakpoint 1, main (argc=1, argv=0x7ffe673b5638) at ...
7 int lol = 0xbeefface;
(gdb) record
(gdb) continue
Continuing.
Program stopped.
0x00007f710c188746 in __GI__exit ...
(gdb) reverse-continue
Continuing.
...
No more reverse-execution history.
main (argc=1, argv=0x7ffe673b5638) at ...
7 int lol = 0xbeefface;
我能够重现您的问题
Breakpoint 1, main (argc=1, argv=0x7ffeb7945198) at main.c:7
7 int lol = 0xbeefface;
(gdb) b _exit
Breakpoint 2 at 0x7fc62dbb8710: file ...
(gdb) continue
Continuing.
Breakpoint 2, __GI__exit ...
(gdb) reverse-continue
Target native does not support this command.
这是在 Linux 2.6.18 中
内核不支持吗?
内核与它无关。你用的是什么版本的gdb?
鉴于您的 GCC 是 2008 年的,并且 GDB 在 2009 年发布的 7.0 版中增加了对反向执行的支持,我猜您的 GDB 实在是太老了。