我尝试在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
但我无法调试。
请分享如何调试分段错误的良好实践。
感谢。
答案 0 :(得分:2)
简化代码以保留ICE仍然发生的最低限度,并向GCC项目提交错误报告。他们解决问题的几率要高于你。
答案 1 :(得分:1)
这只是猜测,但值得尝试使用-ftemplate-depth-103
增加模板深度。我不知道什么是默认值,以及您的模板结构有多深。
答案 2 :(得分:1)
我建议升级你的GCC编译器(因为旧的4.4编译器崩溃了)。尝试获取GCC 4.6 source code然后构建它。
不要忘记担心依赖关系,并仔细阅读并遵循installation instructions(特别是,不要在源目录中构建!)。
如果您真的想自己调试编译器,请从源代码重建它并使用-g
重新编译它