2011-01-04 10 views
36

utilizo print (CEthPacket*) 0xeb609a0 para examinar un objeto en la dirección indicada y obtener A syntax error in expression, near ') 0xeb609a0'.¿Por qué gdb casting no funciona?

¿Qué estoy haciendo mal?

EDIT: CEthPacket es una clase de C++ y estoy en gdb Fedora (6.8-37.el5).

Respuesta

3

Usted no dijo en qué plataforma, qué versión de GDB, o qué CEthPacket es.

Mi primera suposición es que deberías probar print (struct CEthPacket *) 0xeb609a0 en su lugar.

+0

con struct obtengo un error de "conversión inválida" – jackhab

+0

trabajado para mí! –

0

Acabo de tropezar con un error muy similar. Fue causado porque estaba tratando de hacer referencia a un objeto que no está definido en el alcance del marco de pila actual. Intente cambiar a un marco de pila donde se define el objeto CEthrPacket.

+0

Lamentablemente estaba en el marco correcto en la pila – jackhab

48

Acabo de funcionar en al problema similar, y, a partir de un colega mío, he aprendido que es necesario proporcionar el espacio de nombres que la clase pertenece dentro de comillas simples de la siguiente manera:

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

+6

¡No es obvio que, gracias! – Sam

+4

¿Y qué hay de las plantillas? ¿Cómo le digo a gdb que este valor es un 'std :: vector *', por ejemplo? – ulidtko

+1

¡eres un genio, gracias! WTF? – v01pe

0

También su espacio de nombres inicial es el de la pila actual. Si desea comenzar desde la raíz, debe usar :: NS1 :: NS2 :: Obj.

Cuestiones relacionadas