Голый минимум
-O0
в основном говорит компилятору не делать оптимизаций. Оптимизатор может удалить некоторые локальные переменные, объединить несколько блоков кода и т. Д., И в результате он может сделать отладку непредсказуемой. Цена за опцию -O0
составляет очень медленное выполнение кода , но начиная с версии 4.8 компиляторы GCC (включая Fortran) принимают недавно введенный уровень оптимизации -Og
:
-OG
Оптимизация опыта отладки. -Og включает оптимизации, которые не мешают отладке. Этот уровень оптимизации должен быть выбран для стандартного цикла редактирования-компиляции-отладки, предлагая разумный уровень оптимизации при одновременной поддержке быстрой компиляции и хорошем отладочном опыте.
Итак, если возможно, используйте -Og
, в противном случае используйте -O0
.
Эта опция фактически делает возможной отладку, запрашивая у компилятора информацию об отладке, предназначенную для использования интерактивным отладчиком (GDB).
Addititonal
Их много. Наиболее полезными на мой взгляд являются:
-Wall
, чтобы "включить все предупреждения о конструкциях, которые некоторые пользователи считают сомнительными и которые легко избежать (или изменить, чтобы предотвратить предупреждение), даже в сочетании с макросами."
-Wextra
, чтобы «включить некоторые дополнительные флаги предупреждений, которые не включены -Wall.»
-pedantic
для создания предупреждений о языковых функциях, которые поддерживаются gfortran, но не являются частью официального стандарта Fortran 95. Можно быть еще более «педантичным» и использовать флаг -std=f95
, чтобы предупреждения стали ошибками.
-fimplicit-none
, чтобы "указать, что неявная типизация не допускается, если только она не переопределена явными операторами IMPLICIT. Это эквивалентно добавлению неявного none к началу каждой процедуры."
-fcheck=all
для «включения тестов во время выполнения», таких как, например, проверки границ массива.
-fbacktrace
, чтобы "указать, что при возникновении ошибки времени выполнения или испускании смертельного сигнала (ошибка сегментации, недопустимая инструкция, ошибка шины или исключение с плавающей запятой) библиотека времени выполнения Fortran должна вывести обратный след ошибки. "