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
J'obtiens : Invalid register `%eax' Et si je fais juste "info registers" eax n'apparaît pas. Pourtant, je regarde mon assemblage de code dans l'IDE où un signal EXC_BAD_ACCESS a été généré avec l'instruction : test %eax, %eax Ceci dans XCode en utilisant gdb. Pourquoi gdb ne signale-t-il pas le registre eax ?
La réponse de Bridgette fonctionne pour moi. La réponse de geekosaur est en grande partie correcte, mais vous devez omettre le signe %, donc la commande pour un registre spécifique est la suivante info registers eax
. Je ne suis pas sûr que cela soit différent pour les différentes versions de gdb, cependant.
Commandes Gdb :
i r <register_name>
: imprimer un seul registre, par exemple i r rax
, i r eax
i r <register_name_1> <register_name_2> ...
: imprimer plusieurs registres, par exemple i r rdi rsi
,i r
Impression de tous les registres sauf les registres à virgule flottante et vectoriels (xmm, ymm, zmm).i r a
Impression de tous les registres, y compris les registres à virgule flottante et vectoriels (xmm, ymm, zmm).i r f
: imprimer tous les registres flottants de la FPU ( st0-7
et quelques autres f*
)D'autres groupes de registres que a
( all
) y f
( float
) peuvent être trouvés avec :
maint print reggroups
comme documenté à : https://sourceware.org/gdb/current/onlinedocs/gdb/Registers.html#Registers
Conseils :
xmm0
~ xmm15
sont de 128 bits, presque toutes les machines modernes en sont équipées, elles ont été publiées en 1999.ymm0
~ ymm15
sont de 256 bits, les nouvelles machines en sont généralement équipées, elles sont sorties en 2011.zmm0
~ zmm31
sont de 512 bits, un ordinateur normal n'en dispose probablement pas ( comme l'année 2016 ), ils sont sortis en 2013, et principalement utilisés dans les serveurs jusqu'à présent.info registers
montrer les registres.display $esp
continuer à afficher les registres esp dans la ligne de commande gdb.layout regs
continuer à montrer les registres, avec le mode TUI. 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.