如何在GDB时向函数传递参数 我试图用GDB调试我的C++程序。
我在想,在使用GDB时是否可以将参数传递给函数 例如,我有这样一个程序,如下所示:如何在GDB时向函数传递参数 我试图用GDB调试我的C++程序。,c++,debugging,gdb,parameter-passing,C++,Debugging,Gdb,Parameter Passing,我在想,在使用GDB时是否可以将参数传递给函数 例如,我有这样一个程序,如下所示: #include <iostream> void func(int a) { std::cout << a << std::endl; } int main(int argc, char **argv) { func(2222); return EXIT_SUCCESS; } #包括 void func(int a) { std::cout您可以
#include <iostream>
void func(int a)
{
std::cout << a << std::endl;
}
int main(int argc, char **argv)
{
func(2222);
return EXIT_SUCCESS;
}
#包括
void func(int a)
{
std::cout您可以在函数func())中更改值a
为此,您可以使用:
assign a = $value_you_want
范例
b func # set breakpoint
c # continue
assign a = 2 # breakpoint gets hit, change value from a = 222 to a = 2
您可以在函数func())中更改值a
为此,您可以使用:
assign a = $value_you_want
范例
b func # set breakpoint
c # continue
assign a = 2 # breakpoint gets hit, change value from a = 222 to a = 2
是的。您可以在调试时计算表达式。您可以使用调用
或打印
,但表达式必须在断点时已知
在您的示例中,您可以执行以下操作:
gdb ./test
(gdb) b main
...
(gdb) r
...
(gdb) call func(11)
11
有关调用/打印的详细信息:是。您可以在调试时计算表达式。您可以使用call
或print
,但表达式必须在断点时已知
在您的示例中,您可以执行以下操作:
gdb ./test
(gdb) b main
...
(gdb) r
...
(gdb) call func(11)
11
有关调用/打印的更多信息:我认为不可能在调用func(2222)
之前更改传递给函数的值。但是,您可以在GDB进入函数之后,在另一个代码执行之前修改参数的值
我最喜欢使用GDB进行调试的方法是在Visual Studio代码中,它在所有GDB命令之上提供了一个GUI,并使使用高级GDB调试变得更加容易。您只需单击它就可以为变量设置一个新值。您可以看到下面的示例
我认为在调用func(2222)
之前不可能更改传递给函数的值。但是,您可以在GDB进入函数之后,在另一个代码执行之前修改参数的值
我最喜欢使用GDB进行调试的方法是在Visual Studio代码中,它在所有GDB命令之上提供了一个GUI,并使使用高级GDB调试变得更加容易。您只需单击它就可以为变量设置一个新值。您可以看到下面的示例