【问题标题】:instantiated class of an object对象的实例化类
【发布时间】:2013-03-28 11:25:55
【问题描述】:

我正在eclipse中用gdb调试一个c++程序。我现在怎么知道一个对象的确切类别? 假设我正在调试一个方法

void foo(Instruction *I){
  I->bar();
}

假设Instruction 有很多子类。我怎么知道Instruction 的哪个子类实例化了对象I

【问题讨论】:

  • 给你的子类标签字段。它可以只是简单的枚举。在每个子类的构造函数中设置它们。
  • 我正在GDB中寻找解决方案,不修改代码
  • 你能在 gdb 的命令行中进行 dynamic_cast 吗?否则,找一个vptr?
  • 我可以在gdb中动态转换,但是,由于子类超过50个,这会很麻烦。什么是 vptr?
  • 我知道 Visual Studio 会向您展示此信息。 eclipse中应该有类似的东西。

标签: c++ gdb eclipse-cdt


【解决方案1】:

您想要“设置打印对象”。这将使用 RTTI 信息打印完整的对象。

这应该是默认值;希望最终会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多