236 votes

Comment imprimer les valeurs de registre dans GDB ?

Comment puis-je imprimer la valeur de %eax y %ebp ?

(gdb) p $eax
$1 = void

13 votes

Utilisez layout reg pour que gdb affiche une table de tous les registres entiers et drapeaux, en mettant en évidence celui ou ceux qui ont été modifiés par l'instruction précédente. Voir stackoverflow.com/tags/x86/info par exemple.

12voto

Ciro Santilli Points 3341

p $eax fonctionne à partir de GDB 7.7.1

Depuis GDB 7.7.1, la commande que vous avez essayée fonctionne :

set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1

Cette syntaxe peut également être utilisée pour choisir entre différents membres d'union, par exemple pour les registres à virgule flottante ARM qui peuvent être soit à virgule flottante, soit des entiers :

p $s0.f
p $s0.u

De les docs :

Tout nom précédé de '$' peut être utilisé pour une variable de commodité, à moins qu'il ne s'agisse d'un des noms de registre prédéfinis spécifiques à la machine.

y :

Vous pouvez vous référer au contenu des registres de la machine, dans les expressions, comme à des variables dont le nom commence par '$'. Les noms des registres sont différents pour chaque machine ; utilisez info registres pour connaître les noms utilisés sur votre machine.

Mais je n'ai pas eu beaucoup de chance avec les registres de contrôle jusqu'à présent : OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || 2005 demande de fonctionnalité https://www.sourceware.org/ml/gdb/2005-03/msg00158.html || alt.lang.asm 2013 https://groups.google.com/forum/#!topic/alt.lang.asm/JC7YS3Wu31I

Registres à virgule flottante ARM

Voir : https://reverseengineering.stackexchange.com/questions/8992/floating-point-registers-on-arm/20623#20623

-1voto

d9ngle Points 537

Le plus facile pour moi est :

(gdb) x/x $eax

Premier x représente e x amine et deuxième x est l'hexagone. Vous pouvez voir d'autres formats en utilisant :

(gdb) help x

Vous pouvez facilement imprimer des chaînes de caractères avec x/s $eax ou les adresses de retour avec x/a $ebp+4 .

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