请参阅下面的回溯,我不觉得我之前看到这一点,我无法找到的文档中的任何信息:GDB中@符号的含义是什么?
(gdb) bt
#0 0x000000007b44042c in Driver::setRec (this=0x1, [email protected])
请参阅下面的回溯,我不觉得我之前看到这一点,我无法找到的文档中的任何信息:GDB中@符号的含义是什么?
(gdb) bt
#0 0x000000007b44042c in Driver::setRec (this=0x1, [email protected])
我在文档中找不到它,但它看起来像这是gdb如何显示对变量的引用。根据回溯,您在课程方法中停止,通过参考接受1个参数,并带有以下签名:Driver::setRec(message&)
。
更新:
在C++ Expressions文件中没有明确说明@
。陈述的唯一事情是:
在当GDB显示一个框,的 参考变量的值示出的参数列表中不显示(不像其它变量);这个 避免了混乱,因为引用通常用于大型结构。 总是显示参考变量的地址,除非您指定了“设置打印地址关闭” 。
在内存中打印出几个相同类型的连续对象通常很有用;数组的一部分或动态确定大小的数组,其中只有一个指针存在于程序中。
您可以通过使用二元运算符将内存的连续跨度作为人造数组来执行此操作
@'. The left operand of
@'应该是所需数组的第一个元素,并且是单个对象。右操作数应该是数组的所需长度。结果是一个数组值,其元素是左侧参数的所有类型。第一个元素实际上是左边的论点;第二个元素来自紧跟在第一个元素之后的内存字节,依此类推。这是一个例子。如果一个程序说
有我如何interet这是0x50是一个指针地址到一个字符串的输出消息是开始。如果我在这里找到更多信息,我会更新这篇文章。
它用于将连续的存储位置作为阵列输出。
$gdb *[email protected]
${1,2,3,4,5,6,7,8,9,10}
其功能较弱但易于使用的内存检查。如果你想要更多的动力,你应该使用x(检查内存)命令。请参考
$info gdb
我不认为这是相关的。您描述的@运算符有两个操作数,一个左操作数和一个右操作数。 OP中的@只有一个。 – 2012-04-05 10:11:33
我不认为这是相关的。您描述的“@”运算符有两个操作数,左操作数和右操作数。 OP中的“@”只有一个。 – 2012-04-05 10:11:11
我的结论仍然符合一致意见,但其中的例子还引用了某种指针。 – 2012-04-05 21:27:30