5
(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)
4

2 回答 2

2

我不是专家,但看来您可能忘记启用 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.
于 2018-12-22T18:16:42.403 回答
1

这是在 Linux 2.6.18 中

内核不支持吗?

内核与它无关。你用的是什么版本的gdb

鉴于您的 GCC 是 2008 年的,并且 GDB 在 2009 年发布的 7.0 版中增加了对反向执行的支持,我猜您的 GDB 实在是太老了

于 2012-05-15T05:34:33.663 回答