2011-10-21 46 views
47

Soy nuevo en gdb, así que tengo alguna pregunta;cómo se puede ver el contenido de la pila con gdb

  • ¿cómo puedo ver el contenido de la pila? ex: para ver el contenido del registro, escribo info registers. Para la pila lo que debería ser

  • ¿cómo puedo ver el contenido de $0x4(%esp)? Cuando escribo print /d $0x4(%esp) gdb da error.

plataforma: Linux GDB

+0

posibles duplicados de [Uso de GDB para inspeccionar la pila de la máquina] (http://stackoverflow.com/questions/4019508/using-gdb-to-inspect-the-machine-stack) –

Respuesta

63

info frame para mostrar la información del marco de pila

Para leer la memoria en direcciones que se indican usted debe echar un vistazo a x

x/x $esp para hexagonal x/d $esp para x/u $esp firmado para firmar etc. X utiliza la sintaxis de formato, también se puede echar un vistazo a través de la instrucción en curso x/i $eip etc.

39

Es necesario utilizar los comandos de memoria de visualización del BGF. El básico es x, for examine. Hay un ejemplo en el ligada a la página que utiliza

gdb> x/4xw $sp 

para imprimir "cuatro palabras (w) de memoria por encima del puntero de pila (en este caso, $sp) en hexadecimal (x)". La cita es ligeramente parafraseada.

32

uso:

1. bt - traza inversa: Mostrar funciones de la pila y args

2. info frame - mostrar la pila de inicio/fin/args/Locales punteros

3. x/100x $sp - Mostrar memoria de pila

  
(gdb) bt 
#0 zzz() at zzz.c:96 
#1 0xf7d39cba in yyy ([email protected]=0x0) at yyy.c:542 
#2 0xf7d3a4f6 in yyyinit() at yyy.c:590 
#3 0x0804ac0c in gnninit() at gnn.c:374 
#4 main (argc=1, argv=0xffffd5e4) at gnn.c:389 

(gdb) info frame 
Stack level 0, frame at 0xffeac770: 
eip = 0x8049047 in main (goo.c:291); saved eip 0xf7f1fea1 
source language c. 
Arglist at 0xffeac768, args: argc=1, argv=0xffffd5e4 
Locals at 0xffeac768, Previous frame's sp is 0xffeac770 
Saved registers: 
    ebx at 0xffeac75c, ebp at 0xffeac768, esi at 0xffeac760, edi at 0xffeac764, eip at 0xffeac76c 

(gdb) x/10x $sp 
0xffeac63c: 0xf7d39cba 0xf7d3c0d8 0xf7d3c21b 0x00000001 
0xffeac64c: 0xf78d133f 0xffeac6f4 0xf7a14450 0xffeac678 
0xffeac65c: 0x00000000 0xf7d3790e 
Cuestiones relacionadas