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