为什么gdb铸造不起作用?

为什么gdb铸造不起作用?,gdb,Gdb,我使用print(CEthPacket*)0xeb609a0检查给定地址处的对象,并获得表达式中的语法错误,靠近“'0xeb609a0”。 我做错了什么 编辑: CETHOPACK是C++类,我在GDB FEDORA(687.37。EL5)。 < P>您没有在哪个平台上说GDB的版本,或者什么 CEthPase。 我的第一个猜测是您应该尝试打印(struct CEthPacket*)0xeb609a0。我刚刚遇到了一个非常类似的错误。这是因为我试图引用的对象未在当前堆栈帧的范围内定义。尝试更改为

我使用
print(CEthPacket*)0xeb609a0
检查给定地址处的对象,并获得表达式中的
语法错误,靠近“'0xeb609a0”。

我做错了什么

编辑:
CETHOPACK是C++类,我在GDB FEDORA(687.37。EL5)。

< P>您没有在哪个平台上说GDB的版本,或者什么<代码> CEthPase<代码>。
我的第一个猜测是您应该尝试打印(struct CEthPacket*)0xeb609a0。

我刚刚遇到了一个非常类似的错误。这是因为我试图引用的对象未在当前堆栈帧的范围内定义。尝试更改为定义CEthrPacket对象的堆栈帧。

我刚刚遇到了类似的问题,从我的一位同事那里,我了解到您需要在单引号内提供类所属的命名空间,如下所示:

(gdb) p ('MyScope::MyClass'*) ptr; 

另外,您的起始名称空间是当前堆栈中的名称空间。如果要从根目录开始,必须使用::NS1::NS2::Obj。

那么模板呢?例如,我如何告诉gdb该值是一个
std::vector*
?@ulidtko我发现最好的方法是使用损坏的名称。我做了,我只说了这么多。