如何在GDB时向函数传递参数 我试图用GDB调试我的C++程序。

如何在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您可以

我在想,在使用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您可以在函数
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调试变得更加容易。您只需单击它就可以为变量设置一个新值。您可以看到下面的示例