Comment puis-je imprimer la valeur de %eax
y %ebp
?
(gdb) p $eax
$1 = void
Comment puis-je imprimer la valeur de %eax
y %ebp
?
(gdb) p $eax
$1 = void
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
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.
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.