Eu sou novo no GDB, então tenho algumas perguntas:
Como posso ver o conteúdo da pilha? Exemplo: para ver o conteúdo do cadastro, digito
info registers
. Para a pilha, o que deveria ser?Como posso ver o conteúdo de
$0x4(%esp)
? Quando digitoprint /d $0x4(%esp)
, GDB dá um erro.
Plataforma: Linux e GDB
Respostas:
info frame
para mostrar as informações do stack framePara ler a memória em determinados endereços, você deve dar uma olhada em
x
x/x $esp
para hexx/d $esp
para assinadox/u $esp
para não assinado etc. x usa a sintaxe de formato, você também pode dar uma olhada na instrução atual viax/i $eip
etc.fonte
Usar:
bt
- backtrace: mostra funções de pilha e argumentosinfo frame
- mostra os ponteiros de início / fim / args / locais da pilhax/100x $sp
- mostrar pilha de memóriafonte
Você precisa usar os comandos de exibição de memória do gdb. O básico é
x
, para examinar . Há um exemplo na página vinculada que usapara imprimir "quatro palavras (
w
) de memória acima do ponteiro da pilha (aqui,$sp
) em hexadecimal (x
)". A citação está ligeiramente parafraseada.fonte