C++ 如何查看C++;gdb中的整数?

C++ 如何查看C++;gdb中的整数?,c++,gdb,C++,Gdb,我编译:g++-std=c++14-g test.cpp 在gdb中运行程序: gdb./a.out (gdb)断开主管道 (gdb)运行 (gdb)下一步 我所尝试的: (gdb)打印/t&a 打印111111111111111111111111111111111011101111100 这看起来不是正确的数字,我期待着0000…0000。如何从整型变量a的内存位置打印二进制值?您正在尝试打印a的地址,该地址位于main的堆栈帧中,与其值无关。尝试: print/ta您也可以使用gui查看它,

我编译:
g++-std=c++14-g test.cpp

在gdb中运行程序:

gdb./a.out

(gdb)断开主管道

(gdb)运行

(gdb)下一步

我所尝试的:

(gdb)打印/t&a

打印
111111111111111111111111111111111011101111100


这看起来不是正确的数字,我期待着0000…0000。如何从整型变量a的内存位置打印二进制值?

您正在尝试打印a的地址,该地址位于main的堆栈帧中,与其值无关。尝试:


print/ta

您也可以使用gui查看它,如:如果您对gdb没有太多经验,我建议您使用gui。另外,手头有一份简单的备忘单也很有帮助:

使用p/x以十六进制打印内容。让我们看看a是否已设置为0

int main()
{
     int a = 0;
}

十六进制ok

(gdb) p /x a
$7 = 0x0
自动内存中的地址(在堆栈上)

看起来像是二进制的,在我的机器上和你的稍有不同。好

它打印111111111111111111111111111011101111100

(gdb) print /t &a
33 1位于前端,最后4位为0xc

与十六进制相比,我的看起来是正确的。0x7fffffe3dc

我想你的也是

如果你期待一堆0。这将是a的值,而不是a的地址

That doesn't look like the right number?

gdb缩小了结果-0实际上是一堆0。

感谢资源链接,看起来它们对我有用。我希望如此!这些对我帮助很大!我的系统是64位的,您也可以在gdb中打印文字:打印一个设置了32位的整数
p/t(1
(gdb) p /t &a
$9 = 11111111111111111111111111111111110001111011100
(gdb) print /t &a
That doesn't look like the right number?
(gdb) p /t a
$10 = 0