【问题标题】:GDB: How to print/call parent functions from a child object?GDB:如何从子对象打印/调用父函数?
【发布时间】:2014-02-01 10:15:03
【问题描述】:

基本上就是这样。我无法从 GDB 中的对象调用某些继承的函数/成员。

例如,我的代码中有这一行:

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

在控制台中打印 'foo' 的大小。但是当我停止使用 GDB 并尝试打印它时,我得到了这个:

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

编辑

foo 声明是:

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

sc_module 是一个 SystemC 接口,其中方法 size() 是。 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()'.

有没有一种方法可以让我从那时起调用该方法?

非常感谢:)

【问题讨论】:

  • 试试 ((bar*)foo)->size()
  • 我之前尝试过,但我得到了同样的错误。我将编辑我的问题以添加更多信息。

标签: c++ inheritance methods printing gdb


【解决方案1】:

如果方法已优化,您可以看到此行为。可能还有其他原因。

后面示例中的语法错误表明您的 gdb 可能是旧的。我们在最近的版本中修复了此类错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多