GNU/Linux >> Tutoriels Linux >  >> Linux

Comment imprimer les membres d'un objet c++ en utilisant GDB à partir d'une adresse si le type de classe de l'objet est comme A ::B

Je sais que cela est étiqueté comme répondu, mais j'ai pu reproduire ce problème en utilisant gdb sur OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012)) et la solution qui fonctionne pour moi n'a pas répondu pour moi.

Il s'avère qu'il y avait une autre question sur SO qui avait une réponse qui fonctionnait, donc je pense qu'il vaut la peine de répondre à cette question :

Pourquoi le casting gdb ne fonctionne pas ?

La réponse courte est que vous devrez peut-être mettre entre guillemets simples vos variables d'espace de noms :

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


Fonctionne pour moi :

g++ -g test.cpp -o test
gdb test
(gdb) break main
(gdb) r


Breakpoint 1, main () at test.cpp:22
22      A::B *p = new A::B(100);
(gdb) n
24      p->print();
(gdb) n
m_a is 100
26      int *q = 0;
(gdb) p p
$1 = (A::B *) 0x602010
(gdb) p (A::B *) 0x602010
$2 = (A::B *) 0x602010
(gdb) p *((A::B *) 0x602010)
$3 = {m_a = 100}

Ça marche pour moi. Qu'est-ce que vous utilisez (version de gcc, système d'exploitation, drapeaux de compilation ?)


Linux
  1. Comment trouver le chemin complet du programme Linux C++ de l'intérieur ?

  2. Comment imprimer l'heure actuelle (avec millisecondes) en utilisant C++ / C++11

  3. Comment afficher les membres d'un groupe ?

  4. Comment capturer la première adresse IP à partir d'une commande ifconfig ?

  5. Comment forcer Linux à réacquérir une nouvelle adresse IP auprès du serveur DHCP ?

Comment lister les membres d'un groupe sous Linux

Comment vérifier la version d'Ubuntu à partir de la ligne de commande

Comment changer l'adresse MAC sur Ubuntu 20.04 en utilisant Macchanger

Linux - Comment obtenir l'adresse IPv4 d'une interface à partir de /proc ?

Comment obtenir l'adresse IP d'un conteneur Docker à partir de l'hôte

comment générer une adresse MAC aléatoire à partir de la ligne de commande Linux