|
Fortran プログラムの実行中に異常終了する、想定とは異なる計算結果になる、あるいは実行するたびに結果が変わるといった問題の原因を特定するために、インテル Fortran
コンパイラーには実行時に診断情報を出力するオプションが用意されています。
これらの機能を利用するには、ifx のコンパイル時に check オプションを指定します。このオプションは、一部の機能実装に違いはあるものの、従来の ifort
でも利用可能でした。
問題発生箇所を特定しやすくするために、デバッグ情報を生成する -g (Linux) または
/Zi (Windows) と、エラー発生時に呼び出し履歴を表示する traceback オプションを併せて指定することをお勧めします。
Visual Studio を利用している場合も、これらのオプションはプロジェクトのプロパティから有効化できます。
check
オプションは、プログラム実行時にソースコード内で扱われる配列や変数の状態を検査し、配列範囲外アクセスやオーバーフロー、アンダーフロー、未初期化変数の使用などの問題を検出します。
検査対象ごとにキーワードを指定できます。
例えば、配列の範囲外アクセスを検出する場合は -check bounds (Linux) または /check:bounds
(Windows) を指定します。
また、スタックオーバーフローを検出する場合は -check stack (Linux) または /check:stack
(Windows) を指定します。
check オプションが提供するすべての検査機能を有効にするには -check all (Linux) または
/check:all (Windows) を指定します。
■ オプション例
Linux: ifx -g -O0 -check all -traceback source.f90
Windows: ifx /Zi /Od /check:all /traceback source.f90
check オプションで指定できるキーワードの詳細については、以下の Intel 社のドキュメントをご参照ください。
» デベロッパー・ガイドおよびリファレンス (英語) はこちら
なお、本記事で紹介したオプションはデバッグ用途を想定したものです。完成したプログラムを配布または公開する際は、check
オプション、traceback オプション、およびデバッグ情報生成オプションを無効にして再コンパイルすることをお勧めします。
|