我使用print (CEthPacket*) 0xeb609a0
检查给定地址的对象并获取A syntax error in expression, near ') 0xeb609a0'.
我做错了什么?
编辑: CEthPacket是一个C ++类,我在gdb Fedora(6.8-37.el5)上。
答案 0 :(得分:55)
我刚刚遇到了类似的问题,而且,从我的一位同事那里,我了解到你需要在一个引号内提供该类所属的命名空间,如下所示:
(gdb) p ('MyScope::MyClass'*) ptr;
答案 1 :(得分:3)
您没有说明哪个平台,哪个版本的GDB或CEthPacket
是什么。
我的第一个猜测是你应该尝试print (struct CEthPacket *) 0xeb609a0
。
答案 2 :(得分:1)
此外,您的起始命名空间是当前堆栈中的命名空间。如果你想从root开始,你必须使用:: NS1 :: NS2 :: Obj。
答案 3 :(得分:0)
我遇到了一个非常类似的错误。这是因为我试图引用一个未在当前堆栈框架范围内定义的对象。尝试更改为定义了CEthrPacket对象的堆栈帧。