請參閱下面的回溯,我不覺得我之前看到這一點,我無法找到的文檔中的任何信息: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