4

LLDB 每次都围绕当前行打印上下文,如下所示:

     int a = 12;
     int b = a * 13;
->   printf("%d\n", b);
     return 0;
   }

同时,GDB 只打印一个当前行:

->   printf("%d\n", b);

我可以像 LLDB 一样让 GDB 在每一步都打印上下文吗?谷歌搜索给出了所有列表命令。

4

2 回答 2

3

实现此目的的一种方法可能是定义一个重新定义关键字的宏,例如“s”或“n”。例如,如果您想在每一步打印出堆栈指针的值,您可以通过在 (gbd) 控制台中输入这些行来重新定义“s”:

def s
step
info registers sp
end

现在每次使用命令“s”时,实际上都会执行一步并打印 sp 寄存器

于 2013-07-10T14:57:41.727 回答
1

没有内置的方法可以做到这一点。

您可以使用 hookpost-stop 调用显式列表命令使其工作。

不过,我认为大多数人只是使用众多 gdb GUI 之一。

于 2013-05-24T18:50:15.813 回答