2012-02-18 7 views
7

Tôi đang gỡ lỗi chương trình c bằng gdb trong thiết bị đầu cuối Linux, tôi đã tháo nó và chạy nó, sau đó cố gắng tìm địa chỉ bộ nhớ của thanh ghi EIP. Đây là những gì đã xảy ra:Eip đăng ký không hợp lệ?

(gdb) i r EIP đăng ký 'EIP' không hợp lệ

Tại sao nó nói rằng EIP register của tôi là không hợp lệ?

+0

có phải là một chương trình 64-bit ? Nếu vậy, đó là rip, không phải eip. –

+0

Vâng, cảm ơn bạn tôi không biết họ là những cái tên khác nhau. – jay

+0

Tuyệt vời, làm cho nó trở thành câu trả lời. –

Trả lời

16

Đây có phải là chương trình 64 bit không? Nếu vậy, đó là rip, không phải eip.

+2

Lưu ý rằng 'gdb' cho phép bạn tham khảo bộ đếm chương trình bằng' $ pc'. Điều này sẽ làm việc trên cả 32 và 64 bit, và cũng trên các kiến ​​trúc khác. – Jester

1

Tùy thuộc vào kiến ​​trúc của chương trình của bạn vào sổ đăng ký có thể thay đổi:

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