2013-03-26 70 views
0

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

+1

呃,用'信息registers'?你的问题不清楚。 – nneonneo 2013-03-26 21:25:15

+0

我只想在特定地址的寄存器值,阅读我的问题 – cakester 2013-03-26 21:26:00

+1

这是没有道理的。寄存器不是内存。 – nneonneo 2013-03-26 21:26:37

回答

1

你有两个选择:

  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 
    
0

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

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

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

+0

不,我希望寄存器中的值不在内存中 – cakester 2013-03-26 21:33:21

相关问题