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

How to debug segmentation fault of g++?

本文关键字:g++ 分段 错误 调试 何调试      更新时间:2023-10-16

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

../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

但是我无法调试。

请分享如何调试分段错误的好做法。

谢谢。

简化代码以保留ICE仍然发生的最低限度,并向GCC项目提交错误报告。他们解决问题的机会比你大得多。

我建议升级您的GCC编译器(因为您的旧4.4编译器崩溃了)。尝试获取GCC 4.6的源代码,然后构建它。

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

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

这只是一个猜测,但值得尝试使用-ftemplate-depth-103增加模板深度。我不知道默认值是多少,也不知道你的模板结构有多深