2012-02-18 2 views
7

Je débogue un programme c avec gdb dans le terminal Linux, je l'ai démonté et l'ai exécuté, puis j'ai essayé de trouver l'adresse mémoire du registre EIP. Ce qui est arrivé:Registre invalide eip?

(gdb) i r eip registre non valide `eip »

Pourquoi faut-il dire que mon registre eip est invalide?

+0

Est-il un programme 64 bits ? Si c'est le cas, c'est rip, pas eip. –

+0

Oui c'est ça merci je n'avais aucune idée qu'ils étaient des noms différents. – jay

+0

Cool, ce qui en fait la réponse. –

Répondre

16

Est-ce un programme 64 bits? Si c'est le cas, c'est rip, pas eip.

+2

Notez que 'gdb' vous permet de faire référence au compteur de programme en utilisant' $ pc'. Cela fonctionnera sur 32 et 64 bits, et également sur d'autres architectures. – Jester

1

Selon l'architecture de votre programme, le registre peut changer:

  • 16 bits - ip
  • 32 bits - eip
  • 64 bits - rip