gdb反向步进 - Linux不支持?

时间:2012-05-14 19:01:51

标签: linux gcc gdb

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

2 个答案:

答案 0 :(得分:1)

  

这是在Linux 2.6.18中

     

内核不支持吗?

内核 nothing 与它有关。您使用的是什么版本的 gdb

鉴于你的GCC可以追溯到2008年,并且GDB在2009年发布的7.0版本中增加了对反向执行的支持,我猜你的GDB只是太老了

答案 1 :(得分:1)

在我虚弱的心中,您似乎忘记了启用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.