2012-02-18 63 views
7

我在linux终端上用gdb调试一个c程序,我拆开它并运行它,然后试图找到内存地址的EIP寄存器。事情是这样的:无效的注册eip?

(GDB),IR EIP 无效寄存器`EIP”

为什么它说,我的EIP寄存器是无效的?

+0

它是一个64位程序?如果是这样,这是撕裂,而不是eip。 – 2012-02-18 06:29:54

+0

是的,这是它谢谢你,我不知道他们是不同的名字。 – jay 2012-02-18 07:14:19

+0

酷,让它成为答案。 – 2012-02-18 07:23:01

回答

16

它是一个64位程序吗?如果是这样,这是撕裂,而不是eip。

+2

请注意,'gdb'允许您使用'$ pc'来引用程序计数器。这可以在32位和64位以及其他体系结构上工作。 – Jester 2015-01-09 13:48:05

1

根据你的程序的架构寄存器可以改变:

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