2014-01-13 69 views
1

基本上就是這樣。我無法從GDB中的對象中調用一些繼承的函數/成員。GDB:如何從一個子對象打印/調用父功能?

舉例來說,我有這個線在我的代碼:

41  std::cout << foo->size() << std::endl; 

其中在控制檯打印「富」的大小。但是,當我用GDB停在那裏,並嘗試將其打印出來,我得到這個:

(gdb) print foo->size() 
Couldn't find method foo::size 

編輯

FOO聲明:

class foo : public sc_core::sc_module { ... }; 

sc_module是SystemC的接口,其中,方法的大小()是。 sc_corenamespace。所以,當我嘗試並獲得這樣的:

(gdb) print (sc_module*)pipe.name() 
No symbol "sc_module" in current context. 
(gdb) print (sc_core::sc_object*)pipe.name() 
A syntax error in expression, near `)pipe.name()'. 

有,我可以打電話從該點法的方式進行?

感謝很多:)

+0

嘗試((bar *)foo) - > size() – Peter

+0

我之前嘗試過,並且得到相同的錯誤。我將編輯我的問題以添加更多信息。 – makeMonday

回答

2

您可以看到此行爲如果方法已經被優化掉了。可能還有其他原因。

在後面的例子中的語法錯誤表明,也許你的gdb是舊的。我們在更新的版本中修復了這樣的錯誤。

相關問題