如果程序没有在gdb中运行,如何打印局部变量?

如果程序没有在gdb中运行,如何打印局部变量?,gdb,Gdb,我知道这个值等于其他值,但当我尝试在gdb中打印它时,它给了我一个非常大的十六进制值:-0xc(%ebp) 我如何在gdp中检查这一点,以找到该位置的整数 编辑:更多信息-以下是有问题的行: 0x08049961 <+88>: cmpl $0x3,-0xc(%ebp) 0x08049965 <+92>: je 0x804996c <level_3+99> 0x08049961:cmpl$0x3,-0xc(%ebp) 0x08049965:

我知道这个值等于其他值,但当我尝试在gdb中打印它时,它给了我一个非常大的十六进制值:-0xc(%ebp)

我如何在gdp中检查这一点,以找到该位置的整数

编辑:更多信息-以下是有问题的行:

0x08049961 <+88>:   cmpl   $0x3,-0xc(%ebp)
0x08049965 <+92>:   je     0x804996c <level_3+99>
0x08049961:cmpl$0x3,-0xc(%ebp)
0x08049965:je 0x804996c
我基本上是在尝试访问-0xc(%ebp)中的值,以查看与三个值的比较是否有效。我该怎么做?它吐出了一个非常大的整数,以百万计,我知道这是一个不可能的事实。

(gdb)x-0xc+$ebp
-0xc(%ebp)是将-12(字节)添加到基指针的值,从而生成一个新指针。你需要取消对它的引用。此外,您必须有一个正在运行的程序才能存在该变量的实例。…
(gdb)help x将向您显示不同的打印格式
x
可以检查多种格式的内存地址,包括
x/wd
查看指向内存的带符号十进制和
x/wx
查看十六进制
w
这里表示单词大小(4字节),
h
表示半字(2字节),
b
表示字节,
g
表示巨人(8字节)。