C 为什么是gdb;“设置”;命令不';无法识别全局变量,必须添加";::&引用;或;变量";?
我试图在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
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
,因为它比较短