我正在尝试使用GDB调试我的C ++程序。
我在考虑使用GDB时是否可以将参数传递给函数?
例如,我有如下程序:
#include <iostream>
void func(int a)
{
std::cout << a << std::endl;
}
int main(int argc, char **argv)
{
func(2222);
return EXIT_SUCCESS;
}
我在函数func(2222)
的行main
中设置了一个断点。我的问题是:在此程序上使用GDB时,是否可以为函数func
而不是2222
设置另一个参数?
您可以在函数func())
中更改值a。因此,您可以使用:
assign a = $value_you_want
是。您可以在调试时评估表达式。您可以使用call <expr>
或print <expr>
,但在断点时必须知道该表达式。
在您的示例中,您可以这样做:
gdb ./test
(gdb) b main
...
(gdb) r
...
(gdb) call func(11)
11
有关呼叫/打印的更多信息:https://sourceware.org/gdb/onlinedocs/gdb/Calling.html