2011-10-21 24 views
47

Sono nuovo di gdb, quindi ho qualche domanda;come si può vedere il contenuto dello stack con gdb

  • come posso guardare il contenuto dello stack? ex: per vedere il contenuto del registro, digito info registers. Per stack cosa deve essere

  • come è possibile visualizzare il contenuto di $0x4(%esp)? Quando digito print /d $0x4(%esp) gdb restituisce un errore.

Piattaforma: Linux gdb

+0

possibile duplicati di [Utilizzo di GDB per ispezionare lo stack macchina] (http://stackoverflow.com/questions/4019508/using-gdb-to-inspect-the-machine-stack) –

risposta

63

info frame per mostrare informazioni pila telaio

Per leggere la memoria in determinati indirizzi si dovrebbe dare un'occhiata a x

x/x $esp per hex x/d $esp per firmato x/u $esp per unsigned ecc X utilizza la sintassi formato, si potrebbe anche dare un'occhiata al l'istruzione corrente tramite x/i $eip ecc

39

È necessario utilizzare i comandi della memoria-display di gdb. Quello di base è x, for examine. C'è un esempio sul legata-alla pagina che utilizza

gdb> x/4xw $sp 

per la stampa "quattro parole (w) di memoria sopra lo stack pointer (qui, $sp) in esadecimale (x)". La citazione è leggermente parafrasata.

32

Usa:

1. bt - backtrace: funzioni dello stack degli spettacoli e args

2. info frame - mostra stack di inizio/fine/args/Locali puntatori

3. x/100x $sp - spettacolo memoria dello stack

  
(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 
Problemi correlati