web-dev-qa-db-fra.com

gdb: afficher typeinfo de certaines données

Fondamentalement, je veux obtenir typeid(*this).name(), c'est-à-dire le vrai type de this.

Je veux obtenir cela dans GDB (sans modifier le code source). J'ai essayé print typeid(*this) mais il est dit que typeid est inconnu (car je ne l'ai pas inclus dans le fichier source).

35
Albert

Utilisez la commande ptype, comme ceci:

(gdb) ptype 42
type = int
48
Star Brilliant

La commande 'ptype [ARG]' imprime le type.

13
t. fochtman

Cette question peut être liée: vtable dans la classe polymorphe de C++ utilisant gdb :

(gdb) help set print object
Set printing of object's derived type based on vtable info. 

Ce n'est pas exactement typeid () mais il devrait montrer le vrai type d'objet lors de l'inspection d'un pointeur polymorphe (par exemple this dans une classe de base). Naturellement, ne fonctionne que pour les classes avec une table virtuelle (c'est-à-dire au moins une méthode virtuelle), tout comme typeid.

10
regnarg