2014-01-13 37 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是旧的。我们在更新的版本中修复了这样的错误。

相关问题