结构字段名称与 GDB 中的 stl 数组冲突
struct field name conflict with stl array in GDB
#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 时,似乎 2 个“array”在 gdb 中有冲突。我在打印 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
(gdb) p v1.array
= 2
std::array 应该在命名空间 std 中,与字段名无关。不知道为什么会混淆。
有没有关于在没有局部变量的情况下打印 v1.array 的建议?
Not sure why it gets confused.
这肯定是(曾经是?)GDB 中的错误。
在 x86_64
上使用 GDB 10.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
= 2
试试更新的 GDB 版本?
#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 时,似乎 2 个“array”在 gdb 中有冲突。我在打印 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
(gdb) p v1.array
= 2
std::array 应该在命名空间 std 中,与字段名无关。不知道为什么会混淆。
有没有关于在没有局部变量的情况下打印 v1.array 的建议?
Not sure why it gets confused.
这肯定是(曾经是?)GDB 中的错误。
在 x86_64
上使用 GDB 10.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
= 2
试试更新的 GDB 版本?