在我的C ++程序中,我有一个嵌套类,定义如下:
class A {
class B {
// ...
}
// ...
}
当我尝试在GDB中投射指针时,如下所示:set $b = (A::B*)p
我得到“表达式中的语法错误”
我不熟悉存储在ELF文件中的符号(或调试)信息。我想知道我的演员在这里有什么问题,以及如何在GDB中引用嵌套类。
答案 0 :(得分:2)
答案 1 :(得分:1)
适合我(使用当前的CVS GDB,以及7.3.1):
$ cat t.cc
struct A {
struct B {
int x;
};
int y;
};
int main()
{
A::B ab, *p = &ab;
return 0;
}
$ gcc -g t.cc && gdb -q ./a.out
(gdb) b main
Breakpoint 1 at 0x4005b8: file t.cc, line 10.
(gdb) r
Breakpoint 1, main () at t.cc:10
10 A::B ab, *p = &ab;
(gdb) p (A::B*)0x1
$1 = (A::B *) 0x1
(gdb) set $a = (A::B*)0x1
(gdb) p $a
$2 = (A::B *) 0x1
(gdb) quit