2012-05-30 52 views
4

您好我目前正在通過GDB在Linux機器上調試我的代碼庫。我目前面臨的問題是從一個類的對象ptr獲取數據成員的值。要打印對象ptr的位置,我們可以使用「p」(打印)或「顯示」命令。如何在gdb中獲取數據成員的值?

對於例如:我有類這樣

class abc 
{ 
    string a; 
}; 

所以在我的代碼,如果我因此在上述斷行後,使用ABC類的指針,然後

abc* objPtr = new abc(); 

我會得到objPtr,現在我想檢查datamember a(abc :: a)值的值。我怎麼能做到這一點?

(gdb) p objPtr 
$2 = {px = 0x3ba6430690, pn = {pi_ = 0x3ba6430698}} 

此外有沒有不同的方式來檢查數據成員是一個列表/向量?

+0

你用-g編譯過嗎? – ColWhi

+0

是的我已編譯它與-g選項\ –

+0

關於您的列表/向量的問題,看看這裏:http://stackoverflow.com/questions/427589/inspecting-standard-container-stdmap-contents-with-gdb – Nobody

回答

0

你可以試試:

$ p abc->c_str() 
+0

您錯過了'a'並且使用了類型而不是實例:'objPtr - > a.c_str();' – Nobody

+0

如果我想檢查一個數據類爲abc的列表,該怎麼辦? –

+0

也可以嘗試p * objPtr – ColWhi

相關問題