Estoy depurando un programa c en ensamblado para entender cómo funciona el compilador gcc. Quiero leer mi registro de segmento $ fs así que uso x/x $ fs, sin embargo, me dice que no puede acceder a la memoria. ¿Cómo puedo obtener una lectura en cualquier registro que incluya registros de segmento, propósito general y control en el i386: 86_64?¿Cómo leo el valor de todos los registros con gdb?
Respuesta
info registers
imprime valores registros para mí que es lo que están pidiendo pienso:
(gdb) info registers
rax 0x7ffff7731ec8 140737344904904
rbx 0x0 0
rcx 0x0 0
rdx 0x7fffffffd618 140737488344600
rsi 0x7fffffffd608 140737488344584
rdi 0x1 1
rbp 0x0 0x0
rsp 0x7fffffffd528 0x7fffffffd528
r8 0x7ffff7730300 140737344897792
r9 0x7ffff7dec250 140737351959120
r10 0x7fffffffd390 140737488343952
r11 0x7ffff73d0b50 140737341360976
r12 0x400be0 4197344
r13 0x7fffffffd600 140737488344576
r14 0x0 0
r15 0x0 0
rip 0x402330 0x402330 <main>
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb)
Tienes que usar los comandos p
y set
para leer/configurar registros. Los nombres de los registros son diferentes para cada máquina; usa registros de información para ver los nombres usados en tu máquina. Consulte la sección registers del manual de GDB para obtener información detallada con ejemplos.
Para imprimir un valor del registro $fs
, usted puede hacer esto:
(gdb) p/x $fs
$1 = 0x0
comando Qué x
no está examinando una memoria. Hay casos, sin embargo, cuando no puedes hacerlo. Por ejemplo, si una memoria apuntada por una dirección está protegida. Así que si se intenta examinar una memoria en una dirección virtual 0x0
, GDB, obviamente, se niega a hacerlo, por ejemplo:
(gdb) x/x $fs
0x0: Cannot access memory at address 0x0
espero que ayude. ¡Buena suerte!
info all-registers
le da todos los valores de los registros incluidos pila de registros de FPU, registros XMM.
(gdb) i all-r
rax 0x2aaaaace62ce 46912498459342
rbx 0x2aab18e71290 46914345570960
rcx 0x2aaab2020d60 46912619285856
rdx 0xffffffffffd934ee -2542354
rsi 0x2aab18ec7a40 46914345925184
rdi 0xa 10
rbp 0x2aab18e6f000 0x2aab18e6f000
rsp 0x2aab18e6f000 0x2aab18e6f000
r8 0xe 14
r9 0x2aab18eb1f08 46914345836296
r10 0x2aaab9085000 46912737136640
r11 0x0 0
r12 0x2aab18ec7170 46914345922928
r13 0x477f3280 1199518336
r14 0x7 7
r15 0x2aaada787000 46913298132992
rip 0x2aaaaae3b18e 0x2aaaaae3b18e <flt_fadd+4>
eflags 0x283 643
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
st0 10 (raw 0x4002a000000000000000)
st1 3 (raw 0x4000c000000000000000)
st2 0 (raw 0x00000000000000000000)
st3 0 (raw 0x00000000000000000000)
st4 0 (raw 0x00000000000000000000)
st5 0 (raw 0x00000000000000000000)
st6 0 (raw 0x00000000000000000000)
st7 0 (raw 0x00000000000000000000)
fctrl 0x137f 4991
fstat 0x7000 28672
ftag 0xc0 192
fiseg 0xaae3afe5 -1427918875
fioff 0x2aaa 10922
foseg 0x18e6ee48 417787464
fooff 0x2aab 10923
fop 0x704 1796
xmm0 {f = {0x0, 0x6, 0x0, 0x0}} {f = {0, 6.48876953, 0, 0}}
xmm1 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm2 {f = {0x0, 0x1c0, 0x0, 0x0}} {f = {0, 448, 0, 0}}
xmm3 {f = {0x0, 0x1, 0x0, 0x0}} {f = {0, 1.75, 0, 0}}
xmm4 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm5 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm6 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm7 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm8 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm9 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm10 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm11 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm12 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm13 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm14 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
xmm15 {f = {0x0, 0x0, 0x0, 0x0}} {f = {0, 0, 0, 0}}
mxcsr 0x1fa0 8096
- 1. ¿Cómo volcar todos los registros XMM en gdb?
- 2. ¿Cómo accedo a los registros con python en gdb
- 3. SQL con Limit1 devuelve todos los registros
- 4. Borrar todos los registros de una tienda
- 5. ¿Cómo dividir todos los métodos de una clase en GDB?
- 6. sin detener todos los hilos en gdb
- 7. ¿Debo utilizar transacciones SQL mientras leo registros?
- 8. Cómo consultar todos los registros creados hoy (medianoche UTC..Actualmente)
- 9. ¿Cómo escribir una consulta solr para recuperar todos los registros con un valor de campo numérico menor que el especificado?
- 10. Recuperar todos los registros en una tabla con nHibernate
- 11. Eliminar todos los registros en NSManagedObjectContext
- 12. Encontrar todos los registros sin asociados
- 13. Doctrine 2 - Obtener todos los registros
- 14. ¿Cómo obtener todos los registros de CoreData Base utilizando NSManagedObjectSubClass?
- 15. Rieles: ¿Cómo encuentro() todos los registros únicos en ciertos campos?
- 16. Los rieles destruyen todos los registros n menos nuevos
- 17. Valor de configuración para una columna de todos los registros en la tabla
- 18. cómo imprimir el valor de std :: map en gdb
- 19. ¿Cómo ver los registros desde el iPhone?
- 20. ¿Cómo borrar todos los registros huérfanos en MySQL?
- 21. ¿Hay algún valor predeterminado para los registros?
- 22. ¿Cómo reemplazar los valores en blanco (nulos) con 0 para todos los registros?
- 23. Campo de downcase masivo para todos los registros en rieles
- 24. ¿Puedo ejecutar las pruebas JUnit automáticamente una vez con todos los registros activados y una vez con todos los registros deshabilitados?
- 25. ¿Cómo obtener el valor de XElement y no el valor de todos los nodos secundarios?
- 26. ¿Cómo leo el valor de una cookie en Play-Framework con Scala?
- 27. ¿Cómo puedo examinar el marco de pila con GDB?
- 28. Eliminar todos los registros relacionados de varias tablas
- 29. Cuente todos los duplicados de cada valor
- 30. Seleccionar todos los registros desde hace un año hasta ahora
Thanks a bunch! Estaba siguiendo un tutorial y no me di cuenta de por qué estaba usando x/x $ reg. Eso aclara las cosas. –