GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo imprimir miembros de un objeto C++ usando GDB desde una dirección si el tipo de clase del objeto es como A::B

Sé que esto está etiquetado como respondido, pero pude reproducir este problema usando gdb en OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012)) y la solución funciona para mí no me respondió.

Resulta que había otra pregunta sobre SO que tenía una respuesta que funcionó, así que creo que vale la pena entrar en esta pregunta:

¿Por qué la conversión de gdb no funciona?

La respuesta corta es que es posible que deba poner entre comillas simples sus variables de espacio de nombres:

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


Funciona para mí:

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}

Esto funciona para mi. ¿Qué estás usando (versión gcc, sistema operativo, banderas de compilación?)


Linux
  1. ¿Cómo agregar una dirección IP en Ubuntu 18.04 usando netplan?

  2. ¿Cómo permitir o bloquear el puerto y la dirección IP usando Firewalld, tablas de IP y UFW en Linux?

  3. ¿Cómo montar desde la línea de comandos como lo hace el Nautilus?

  4. Cómo configurar la dirección IP desde C en Linux

  5. ¿Cómo obtengo mi dirección IP desde la línea de comandos?

Cómo enumerar los miembros de un grupo en Linux

Cómo comprobar la versión de Ubuntu desde la línea de comandos

Cómo cambiar la dirección MAC en Ubuntu 20.04 usando Macchanger

Cómo obtener la dirección IP de un contenedor Docker desde el host

¿Cómo obligo a Linux a volver a adquirir una nueva dirección IP del servidor DHCP?

cómo generar una dirección MAC aleatoria desde la línea de comandos de Linux