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

Leo*_*eon 5 c gdb

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

int doFoo(int a, double* b)
Run Code Online (Sandbox Code Playgroud)

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

set $foo = 1.0
call doFoo(0, &($foo))
Run Code Online (Sandbox Code Playgroud)

不起作用。

Has*_*kun 4

这似乎有效:

set var $foo = &{1.0}
call doFoo(0, $foo)
p *$foo
Run Code Online (Sandbox Code Playgroud)

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