为什么gdb转换不起作用?

时间:2011-01-04 13:57:35

标签: gdb

我使用print (CEthPacket*) 0xeb609a0检查给定地址的对象并获取A syntax error in expression, near ') 0xeb609a0'.

我做错了什么?

编辑: CEthPacket是一个C ++类,我在gdb Fedora(6.8-37.el5)上。

4 个答案:

答案 0 :(得分:55)

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

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

答案 1 :(得分:3)

您没有说明哪个平台,哪个版本的GDB或CEthPacket是什么。

我的第一个猜测是你应该尝试print (struct CEthPacket *) 0xeb609a0

答案 2 :(得分:1)

此外,您的起始命名空间是当前堆栈中的命名空间。如果你想从root开始,你必须使用:: NS1 :: NS2 :: Obj。

答案 3 :(得分:0)

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