如果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
由于
答案 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--);
a
,b
和c
更改(以及受someFunction
影响的任意数量的全局变量或静态变量)。 GDB
如何知道要打印什么?您可以使用print
命令显示变量值。
答案 2 :(得分:0)
gdb最接近的就是为变量设置监视。每次观察变量发生变化时,GDB都会中断。例如GDB: Watch a variable in a given scope