Encontré un problema similar (& esta pregunta) conectando gdb muy temprano en el proceso de arranque - como se menciona en otras respuestas, gdb no aprecia mucho el tamaño de los registros que cambian de debajo. Este problema se puede ver mediante el uso de set debug remote 1
:
(gdb) set debug remote 1
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
...
Sending packet: $g#67...Ack
Packet received: 000000000000000... <~600 bytes>
(gdb) until *0x1000 # at this address we'll be in a different cpu mode
...
Sending packet: $g#67...Ack
Packet received: 10000080000000000000000000000000800000c... <~1000 bytes>
...
Remote 'g' packet reply is too long: 1000008000000000000000000...
(gdb)
Patching gdb to resize its internal buffer when it sees a too-large packet tal como se encuentra en este tema en el seguimiento de errores GDB (y otras partes), en efecto, evitar el problema, al igual que parchear QEMU sólo para enviar 64 bits paquetes de gran tamaño Sin embargo, the latter solution breaks debugging in non-64-bit-modes, y parece que la antigua solución podría ser incompleta:
Suena bastante mal estar cambiando el objetivo detrás de la espalda del BGF BGF cuando es ya depurarlo. No solo el tamaño de los paquetes g/G puede cambiar inadvertidamente, sino también el diseño. Si la descripción del objetivo cambia con su reconfiguración, me parece que GDB debería buscar/recalcular toda la descripción del objetivo . Hoy, creo que solo se puede hacer con un desconexión/reconexión.
- https://sourceware.org/ml/gdb/2014-02/msg00005.html
La desconexión/conexión solución mencionada al final del post no parecen funcionar:
(gdb) disconnect
Ending remote debugging.
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
(gdb) info registers
rax 0x80000010 2147483664
rbx 0x0 0
...
Mi vm ejecuta ubuntu y el host ejecuta debian – contemplatingzombie
Si veo el código gdb, remote.c/* Descripción de los registros del protocolo remoto. */long sizeof_g_packet; no se corresponde con lo esperado. Parece que tu gdbserver no está configurado correctamente (aunque no estoy muy seguro). ¿Estás iniciando el servidor GDB? Si es así, ¿coinciden su versión de GDB y GDBSERVER? – Kamath
Similar en el bugtracker de GDB: https://sourceware.org/bugzilla/show_bug.cgi?id=13984 –