web-dev-qa-db-fra.com

Pourquoi le casting de gdb ne fonctionne pas?

J'utilise print (CEthPacket*) 0xeb609a0 pour examiner un objet à l'adresse indiquée et obtenir A syntax error in expression, near ') 0xeb609a0'.

Qu'est-ce que je fais mal?

EDIT: CEthPacket est une classe C++ et je suis sur gdb Fedora (6.8-37.el5).

38
jackhab

Je viens de tomber sur un problème similaire et, de la part d'un de mes collègues, j'ai appris que vous devez fournir l'espace de noms auquel la classe appartient dans des guillemets simples, comme suit:

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

54
Tsh

Vous n'avez pas indiqué sur quelle plate-forme, quelle version de GDB ou quelle CEthPacket est.

Ma première hypothèse est que vous devriez plutôt essayer print (struct CEthPacket *) 0xeb609a0.

3
Employed Russian

De plus, votre espace de noms de départ est celui de la pile actuelle. Si vous voulez commencer à partir de la racine, vous devez utiliser :: NS1 :: NS2 :: Obj.

1
Mamue

Je viens de rencontrer une erreur très similaire. Cela était dû au fait que j'essayais de référencer un objet qui n'est pas défini dans la portée du cadre de pile actuel. Essayez de passer à un cadre de pile où l'objet CEthrPacket est défini.

0
David Shirley