Как отладить ошибку сегментации g ++? - PullRequest
4 голосов
/ 25 ноября 2011

Я пытался скомпилировать код, используя g ++ 4.4.6 на AIX 6.1. У меня не установлен 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 ]

2 голосов
/ 25 ноября 2011

Упростите код, чтобы оставить минимальный уровень, для которого ICE все еще существует, и отправьте отчет об ошибке в проект GCC.У них гораздо больше шансов решить его, чем у вас.

1 голос
/ 05 декабря 2011

Я предлагаю обновить ваш компилятор GCC (поскольку ваш старый компилятор 4.4 выходит из строя). Попробуй получить исходный код GCC 4.6 и собери его.

Не забывайте беспокоиться о зависимостях, а также внимательно прочитайте и следуйте инструкциям по установке (в частности, не встраивайте в исходный каталог!).

Если вы действительно хотите отладить свой компилятор самостоятельно, пересоберите его из исходного кода и перекомпилируйте его с помощью -g

1 голос
/ 25 ноября 2011

Это всего лишь предположение, но стоило бы попытаться увеличить глубину шаблона с -ftemplate-depth-103.Я не знаю, какое значение по умолчанию и насколько глубока ваша структура шаблона.

...