检查特定帧中的寄存器

时间:2013-03-26 21:23:41

标签: gdb

如果您正在检查转储,可以使用info registers查看gdb中寄存器中的值,但是当程序执行时,您可以查看存储在寄存器中的值,例如地址0x76FD6908吗?例如,当pc处于某个地址时,我只想要寄存器的值

2 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. frame X,然后info registers。这为您提供了堆栈帧中的所有寄存器。请注意,某些寄存器可能无法保存,在这种情况下,GDB会在该帧中为您提供错误的值。
  2. info frame X。这会告诉您仅在该帧中保存的寄存器:

    Stack frame at 0x7fff5f400150:
     rip = 0x100000eed in foo; saved rip 0x100000eed
     called by frame at 0x7fff5f400170, caller of frame at 0x7fff5f400130
     Arglist at 0x7fff5f400148, args: 
     Locals at 0x7fff5f400148, Previous frame's sp is 0x7fff5f400150
     Saved registers:
      rbp at 0x7fff5f400140, rip at 0x7fff5f400148
    

答案 1 :(得分:0)

如果您只想在运行gdb时查看特定的内存区域,请使用x命令。此链接可能有所帮助:

http://www.delorie.com/gnu/docs/gdb/gdb_56.html

以这种方式检查的内存不称为“寄存器”,但这是你的意思吗?