如何在gdb中单步执行时如何显示最后一个变量更新

时间:2016-01-29 00:22:08

标签: c gdb

如果C程序是这样的:

void main ()
{
    int a, b, c;
    a = 1;
    b = a + 1;
    c = b + 1;
}

运行gdb时,单步执行:

如何显示通过该步骤更新的变量?当然,这是一个高度简化的例子,这个想法是追踪执行。类似的东西:

(gdb) step
         a=1
(gdb) step
         b=2
(gdb) step
         c=3

由于

3 个答案:

答案 0 :(得分:1)

gdb有一个选项,可以显示6个面板。

右上方的面板显示本地人或寄存器。

(gdb) step
      a=1

使用此显示,第a = 1行是下一行要执行的。

  

如何显示通过该步骤更新的变量?

在6面板显示中,显示变量a(并且由于您没有对其进行初始化,任何值可能会在步骤之前显示),当您单步执行时,' a'价值已更新。

在emacs中,命令是(setq gdb-many-windows t),我相信gdb手册可以识别命令行等效命令。

---可能与"布局注册"

有关

答案 1 :(得分:0)

这不能自动完成,想象一下你走的路就像这样:

int a = someFunction(b++, c--);

abc更改(以及受someFunction影响的任意数量的全局变量或静态变量)。 GDB如何知道要打印什么?您可以使用print命令显示变量值。

答案 2 :(得分:0)

gdb最接近的就是为变量设置监视。每次观察变量发生变化时,GDB都会中断。例如GDB: Watch a variable in a given scope