インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド

デバッグと最適化

ここでは、デバッグと最適化を制御するさまざまなコマンドライン・オプションの関係について説明します。

-g (Linux* および OS X*) または /debug:full (Windows*) を使用してデバッグを有効にすると、最適化が無効になります。 この場合、コマンドラインで、最適化のコンパイラー・オプションを明示的に指定することで、最適化を有効にできます。

次の表は、一般的なデバッグオプションと最適化オプションをまとめたものです。

-O0 (Linux* および OS X*) または /Od (Windows*)

/Od オプションはすべての最適化をオフにするため、最適化が行われる前にプログラムをデバッグすることができます。デバッグを行う場合のデフォルトの動作です。

Linux* および OS X* では、-O0 (または -g) オプションを指定すると、-fno-omit-frame-pointer が設定されます。

詳細は、次のトピックを参照してください。

  • -O0 (Linux* および OS X*) または /Od (Windows*) コンパイラー・オプション

/O1 または /O1

-O2 または /O2-O3 または /O3

コードの最適化レベルを指定します。これらのオプションを使用する場合、デバッグを行うには -debug extended を使用することを推奨します。

詳細は、次のトピックを参照してください。

  • -O1-O2-O3 (Linux* および OS X*) または /O (Windows*) コンパイラー・オプション

-g または /debug:full

ソースレベルのデバッガーで使用するため、オブジェクト・コードの中にシンボリック・デバッグ情報と行番号を生成します。-O2 (Linux* および OS X*) または /O2 (Windows*) をオフにして、-O0 (Linux* および OS X*) または /Od (Windows*) をデフォルトにします。 ただし、コマンドラインで -O2-O1-O3 (Linux* および OS X*) または /O2/O1/O3 (Windows*) を明示的に指定する場合は除きます。

詳細は、次のトピックを参照してください。

  • -g コンパイラー・オプション (Linux* および OS X*) または /debug:full コンパイラー・オプション (Windows*)

-debug extended (Linux* および OS X*)

拡張デバッグの設定を指定します。

詳細は、次のトピックを参照してください。

  • -debug extended (Linux* および OS X*)

-fp または /Oy-

(IA-32 アーキテクチャーのみ)

最適化で ebp レジスターの使用を無効にし、ebp レジスターをフレームポインターとして使用するように設定します。

詳細は、次のトピックを参照してください。

  • -fp (Linux* および OS X*) または /Oy (Windows*) コンパイラー・オプション

-traceback (Linux* および OS X*) または /traceback (Windows*)

コンパイラーがオブジェクト・ファイルに追加情報を生成するので、シンボリック・スタック・トレースバックが可能になります。

詳細は、次のトピックを参照してください。

  • -traceback コンパイラー・オプション

最適化とデバッグの組み合わせ

コマンドラインで、オブジェクト・ファイルにシンボリック・デバッグ情報を生成する -g (Linux* および OS X*) または /debug:full (Windows*) とともに、最適化オプション O1O2、または O3 を指定すると、シンボリック・デバッグ対応のコードを生成します。

-g オプションまたは /debug:full オプションとともに O1O2、または O3 オプションを指定すると、最適化の影響でデバッグ情報の一部が不正確になることがあります。 Linux* および OS X* でこの問題を回避するには、-debug extended オプションも指定します。

最適化とデバッグは明示的に選択するようにしてください。

最適化レベルを指定しない場合、-g オプションまたは /debug:full オプションは、速度を低下させる -O0 または /Od を設定するため、プログラムの実行速度を低下させます。 ただし、-O2 (Linux* および OS X*) または /O2 (Windows*) と、-g (Linux* および OS X*) または /debug:full (Windows*) の両方を指定すると、速度はそれほど低下しません。

次の表は、-g オプションまたは /debug:full オプションと、最適化オプションを組み合わせて使用した場合の効果を説明したものです。

オプション

結果

-g (Linux* および OS X*) または /debug:full (Windows*)

デバッグ情報が生成され、-O0 または /Od が有効になります (最適化が無効になります)。 Linux* および OS X* システムでは、IA-32 アーキテクチャーを対象にコンパイルする場合は、-fp が有効になります。

-g-O1 (Linux* および OS X*) または /debug:full /O1 (Windows*)

デバッグ情報が生成され、O1 による最適化が有効になります。

-g-O2 (Linux* および OS X*) または

/debug:full /O2 (Windows*)

デバッグ情報が生成され、O2 による最適化が有効になります。

-g-O2 (Linux* および OS X*) または

/debug:full /O2 /Oy- (Windows*)

デバッグ情報が生成され、O2 による最適化が有効になります。IA-32 アーキテクチャー・ベースの Windows* システムでは、/Oy が無効になります。

-g -O3 -fp (Linux* および OS X*) または /debug:full /O3 (Windows*)

デバッグ情報が生成され、O3 による最適化が有効になります。Linux* システムでは、IA-32 アーキテクチャーを対象にコンパイルする場合は、-fp が有効になります。

最適化されたプログラムで debug extended を使用しても、最適化処理中にコードが移動または削除されるため、すべての変数を確認したり、すべての行にブレークポイントを設定することはできません。


このヘルプトピックについてのフィードバックを送信