最適化プログラムをデバッグすると、特殊な問題が発生します。 最適化は演算の順序を変更し、コードを追加または削除し、作成したコードを元のソース・ステートメントと 関連付けるのが難しくなるようなその他の変換を行う場合があります。 たとえば、最適化プログラムは、変数の保管をすべて除去し、それをレジスターにのみ保持します。 ほとんどのデバッガーは、これに従うことができず、その変数が決して更新されないように見えます。
最初にプログラムをデバッグしてから、最適化オプションで再コンパイルし、最適化したプログラムを テストしてからプログラムを製品化することをお勧めします。 最適化したコードが期待どおりの結果を作成しない場合は、別のデバッグ・セッションで特定の最適化の問題を 分離してください。
下の表は、最適化されたコードの開発中に役立つ、特化された情報を提供するオプションを示しています。
診断オプション | |
オプション | 動作 |
---|---|
-qlist | オブジェクト・リストを出力するようにコンパイラーに指示します。 オブジェクト・リストには、生成された命令、トレースバック・テーブル、テキスト定数の 16 進および 疑似アセンブリー表記が含まれています。 |
-qreport | 実行したループ変換と、プログラムが並列化された方法についての報告を作成するようにコンパイラーに 指示します。 このオプションは、-qhot または -qsmp が指定されると使用可能になります。 |
-qinitauto | すべての自動変数を指定の値に初期化するコードを出力するように、コンパイラーに 指示します。 このオプションは最終製品レベルのコードには使用しないことをお勧めします。 パフォーマンス上の望ましくない影響を与える可能性があるからです。 ただし、このオプションは、デバッグの補助として非常に役に立ちます。 |
-qipa=list | IPA 最適化の情報を提供するオブジェクト・リストを出力するように、 コンパイラーに指示します。 |
最適化されたプログラムが最適化されていないプログラムと異なる結果を発生する理由を以下に示します。