如何调试g ++的分段错误?

时间:2011-11-25 11:29:59

标签: c++ g++ segmentation-fault aix

我尝试在aix 6.1上使用g ++ 4.4.6编译代码。我没有安装gdb。 编译后,它显示分段错误错误: -

../test/Corner.h: In member function 'void VirtualFlow<T>::vector_flow(typename T::Data**, typename T::Data**) [with T = NProcess<or_func<NetAndVal<ZVal2>, with_derivatives>, ConvexNoOverlapSize<16, 16, Multiply<65536l, AllPass<CornerT<NetAndVal<ZVal2> >, NoFlow<CornerT<NetAndVal<ZVal2> > > > > > >]':
../test/Corner.h:369: internal compiler error: Segmentation fault

我尝试使用-g选项来创建.o文件并查找问题。

opt/freeware/bin/g++ -g ConnectFlow2.C -o ConnectFlow2.o

但我无法调试。

请分享如何调试分段错误的良好实践。

感谢。

3 个答案:

答案 0 :(得分:2)

简化代码以保留ICE仍然发生的最低限度,并向GCC项目提交错误报告。他们解决问题的几率要高于你。

答案 1 :(得分:1)

这只是猜测,但值得尝试使用-ftemplate-depth-103增加模板深度。我不知道什么是默认值,以及您的模板结构有多深。

答案 2 :(得分:1)

我建议升级你的GCC编译器(因为旧的4.4编译器崩溃了)。尝试获取GCC 4.6 source code然后构建它。

不要忘记担心依赖关系,并仔细阅读并遵循installation instructions(特别是,不要在源目录中构建!)。

如果您真的想自己调试编译器,请从源代码重建它并使用-g重新编译它