在 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 一个新地址。
有时我会遇到我想在调试中调用的函数,这些函数将指针作为参数并更改指向的内容。 示例:
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 一个新地址。