在 GDB 中使用方便变量的地址

Using addresses of convenience variables in GDB

有时我会遇到我想在调试中调用的函数,这些函数将指针作为参数并更改指向的内容。 示例:

int doFoo(int a, double* b)

我想从 gdb 调用这个函数,但没有 double*。是否可以使用便利变量来做到这一点?只需调用

set $foo = 1.0
call doFoo(0, &($foo))

无效。

这似乎有效:

set var $foo = &{1.0}
call doFoo(0, $foo)
p *$foo

使用{} 使GDB 在进程内存中分配单项双精度数组。 请注意,如果赋值中没有 &,每次计算 $foo 都会 return 一个新地址。