Ответ 1
Возможно, вам нужно добавить эти флаги при компиляции кода:
gfortran -g -fbacktrace -ffpe-trap=zero,overflow,underflow youcode.f90 -o run.exe
Объяснение флагов компилятора из руководства gfortran:
-g
включить отладочные данные
-fbacktrace
Укажите, что при возникновении ошибки времени выполнения или испускании смертельного сигнала (ошибка сегментации, недопустимая инструкция, ошибка шины или исключение с плавающей запятой) библиотека времени выполнения Fortran должна выводить обратный след ошибки. Эта опция влияет только на компиляцию основной программы на Фортране.
-ffpe-trap=list
Укажите список исключений IEEE при возникновении исключения с плавающей запятой (FPE). В большинстве систем это приведет к отправке сигнала SIGFPE и прерыванию работы программы, в результате чего будет создан файл ядра, полезный для отладки. list
- это (возможно, пустой) список разделенных запятыми следующих исключений IEEE: invalid
(недопустимая операция с плавающей запятой, например SQRT (-1.0)), zero
(деление на ноль), overflow
(переполнение в операции с плавающей запятой), underflow
(недополнение в операции с плавающей запятой), precision
(потеря точности во время операции) и denormal
(операция вызвала ненормальное значение).
Некоторые подпрограммы в библиотеке времени исполнения Fortran, такие как ‘CPU_TIME, могут вызывать исключения с плавающей запятой, когда используется ffpe-trap = precision. По этой причине использование ffpe-trap = precision не рекомендуется.
Взгляните на эти два места для получения дополнительной информации:
https://gcc.gnu.org/onlinedocs/gcc-4.3.2/gfortran.pdf http://faculty.washington.edu/rjl/uwamath583s11/sphinx/notes/html/gfortran_flags.html