#include <array>
typedef struct {
int array;
} tp1;
int main()
{
std::array<int,8> array1;
/*int array=0;*/
/*array ++;*/
tp1 v1;
v1.array = 2;
return 0;
}
当struct具有字段“array”并且代码使用std::array时,GDB中的2个“array”似乎是冲突的。 打印v1.array时出现语法错误:
Temporary breakpoint 1, main () at a2.c:12
12 v1.array = 2;
(gdb) n
13 return 0;
(gdb) p v1.array
A syntax error in expression, near `'.
但是如果我添加了一个局部变量“array”,那么它就可以正常工作。
(gdb) p array
$1 = 1
(gdb) p v1.array
$2 = 2
std::数组应位于命名空间std中,且与字段名无关。 不知道为什么会混淆。
是否建议打印V1.array而不使用局部变量?
不知道为什么会混淆。
这是(曾经?) 当然是广发行的一个bug。
当在x86_64
上使用GDB10.0
时,它不会再现,而使用G++(Debian 9.3.0-8)
进行编译时:
Temporary breakpoint 1, main () at t.cc:12
12 v1.array = 2;
(gdb) n
13 return 0;
(gdb) p v1.array
$1 = 2
尝试更新的GDB版本?