82 votes

Comment puis-je examiner la trame de la pile avec GDB ?

Pour l'instant, j'utilise GDB pour désassembler un fichier binaire et vérifier les différents registres et autres. Existe-t-il une commande simple pour examiner tout ce qui se trouve sur la pile ? Cela peut-il être limité à tout ce qui se trouve dans une fonction ?

99voto

Flow Points 8018

Vous pouvez visualiser le contenu de la pile avec x/10x $sp

Ceci imprimera les 10 premiers éléments de la pile.

82voto

Michael Mrozek Points 44120

Pour le cadre de la pile actuelle :

  • cadre d'information liste les informations générales sur le cadre (où les choses commencent dans la mémoire, etc.)
  • info args liste les arguments de la fonction
  • infos locales liste les variables locales stockées dans le cadre

66voto

dlanod Points 2597
  • bt (ou backtrace ) vous donnera une pile d'appels.

  • frame <args> sélectionnera un cadre sur la pile d'appel pour l'inspection

  • info frame <args> vous donnera des informations sur un cadre spécifique de la pile. Lorsqu'il est appelé sans arguments, il affichera le cadre actuellement sélectionné.

  • info locals peut vous donner des informations sur toutes les variables locales de la pile.

3voto

kdbreboot Points 39
  • essayez juste bt full et vous obtiendrez tous les cadres et les locaux.
  • entrée frame x pour entrer dans le x cadre

au fait, vous devriez savoir que espace d'adresse des processus et ce qui la compose : espace d'adressage virtuel linux Cela vous aidera à comprendre comment le cadre est utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X