Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么是gdb;“设置”;命令不';无法识别全局变量,必须添加";::&引用;或;变量";?_C_Variables_Gdb_Set_Global - Fatal编程技术网

C 为什么是gdb;“设置”;命令不';无法识别全局变量,必须添加";::&引用;或;变量";?

C 为什么是gdb;“设置”;命令不';无法识别全局变量,必须添加";::&引用;或;变量";?,c,variables,gdb,set,global,C,Variables,Gdb,Set,Global,我试图在gdb中设置值,我有: int i=0; int main(){ ++i; int j=i+2; return 0; } 在“返回”和“r”处中断 奇怪的是,“j”在main中是局部变量,所以“set”没有问题。 虽然“i”是一个全局变量,但似乎我应该添加“:”或“variable”来设置它 我搜索了互联网,它说“变量”是用来设置调试会话中使用的gdb/reg变量的 为什么“i”仍然需要“variable”?您的示例是: (gdb) set i=5 Ambiguous se

我试图在gdb中设置值,我有:

int i=0;
int main(){
  ++i;
  int j=i+2;
  return 0;
}
在“返回”和“r”处中断

奇怪的是,“j”在main中是局部变量,所以“set”没有问题。 虽然“i”是一个全局变量,但似乎我应该添加“:”或“variable”来设置它

我搜索了互联网,它说“变量”是用来设置调试会话中使用的gdb/reg变量的

为什么“i”仍然需要“variable”?

您的示例是:

(gdb) set i=5
Ambiguous set command "i=5": .
这不是名称查找错误,而是gdb解析命令的结果。(尾随的
:。
看起来应该是某个意思,或者列出某个内容;但它看起来很奇怪。)

set
可用于计算表达式,正如您在
set j=4
中发现的那样——但这只是因为没有以
set j
开头的gdb命令

也就是说,
set
首先尝试任何匹配的子命令,识别缩写。由于有多个命令启动
set i
(例如
set substander tty
set input radix
,…),gdb不知道选择哪个。因此,它抱怨命令不明确

设置变量的实际命令是
set variable
,这就是最终尝试成功的原因

请注意,采用表达式的其他命令也可以计算赋值。我倾向于以交互方式使用
p
(又称
print
),而不是
set variable
,因为它比较短。

您的示例是:

(gdb) set i=5
Ambiguous set command "i=5": .
这不是名称查找错误,而是gdb解析命令的结果。(尾随的
:。
看起来应该是某个意思,或者列出某个内容;但它看起来很奇怪。)

set
可用于计算表达式,正如您在
set j=4
中发现的那样——但这只是因为没有以
set j
开头的gdb命令

也就是说,
set
首先尝试任何匹配的子命令,识别缩写。由于有多个命令启动
set i
(例如
set substander tty
set input radix
,…),gdb不知道选择哪个。因此,它抱怨命令不明确

设置变量的实际命令是
set variable
,这就是最终尝试成功的原因

请注意,采用表达式的其他命令也可以计算赋值。我倾向于以交互方式使用
p
(又称
print
),而不是
set variable
,因为它比较短