2011-03-18 121 views
1

我有一个分段错误。使用gdb调试,在堆栈中的第一帧是typeinfo导致分段错误

在所属类别为MyClass的()

没有人知道一些关于所属类别?

+7

你能粘贴一部分处理'typeinfo'或'typeid'的代码吗? – 2011-03-18 14:45:22

+2

而你并没有编译'-fno-rtti'是你吗? – Rup 2011-03-18 14:47:42

+1

我公司的计算机中的代码,并且此seg错误有时,现在每次都发生。没有-fno-rtti。 – user666199 2011-03-18 14:52:20

回答

2

我怀疑是所属类别是该帧的顶部是完全在这种情况下,红色的鲱鱼。你需要继续调用堆栈,直到你找到你自己的代码并在那个时候查看更多细节。几乎肯定你试图从空指针获取typeinfo,但它有点可能只是一个垃圾指针值(这将不太明显)。

1

RTTI只适用于班至少有一个虚拟的方法,因此要确保你有一个。

另外请记住,你可以直接使用RTTI(dynamic_cast的,所属类别,typeid的)欧间接(美中不足的是,也可以在dynamic_cast的方面来实现)。

3

有同样的问题;张贴的解决方案,因为它可能会帮助别人:

制作该项目的一个干净的重建解决了这个问题 - 一些目标文件使用的头文件的不同版本,并导致不一致。实际的错误在我的构建脚本中,因为依赖关系没有正确表达。