Je suis nouveau sur GDB, j'ai donc quelques questions:
Comment puis-je consulter le contenu de la pile? Exemple: pour voir le contenu du registre, je tape
info registers
. Pour la pile, que devrait-il être?Comment puis-je voir le contenu de
$0x4(%esp)
? Quand je tapeprint /d $0x4(%esp)
, GDB donne une erreur.
Plateforme: Linux et GDB
Réponses:
info frame
pour afficher les informations sur le cadre de la pilePour lire la mémoire à des adresses données, vous devriez jeter un œil à
x
x/x $esp
pour hexadécimalx/d $esp
pour signéx/u $esp
pour non signé etc. x utilise la syntaxe de format, vous pouvez également jeter un œil à l'instruction courante viax/i $eip
etc.la source
Utilisation:
bt
- backtrace: affiche les fonctions de la pile et les argumentsinfo frame
- afficher les pointeurs de début / fin / args / locaux de la pilex/100x $sp
- afficher la mémoire de la pilela source
Vous devez utiliser les commandes d'affichage de la mémoire de gdb. La base est
x
, pour examiner . Il y a un exemple sur la page liée qui utilisepour afficher "quatre mots (
w
) de mémoire au-dessus du pointeur de pile (ici,$sp
) en hexadécimal (x
)". La citation est légèrement paraphrasée.la source