0

/check:uninit フラグを使用して Fortran コードをデバッグ モードでコンパイルしています。これは、プロパティ -> Fortran -> ランタイム -> 初期化されていない変数のチェックでアクティブ化されます。

コードを実行すると、初期化されていない変数を示す実行が適切に停止する場合もあれば、問題なく実行し続ける場合もあり、コードをステップ実行するだけで、値が -6.277438562204192D+066 の変数があることがわかります。コンパイラが初期化されていない変数を常に検出できるとは限らないのはなぜですか?

特定のケースでは、検出されない変数がモジュールで定義されたグローバル変数であると述べましたが、それが問題であるかどうかはわかりません.コンパイラは初期化されていないローカル変数しか検出できないのでしょうか? その場合、初期化されていないグローバル変数をどのように検出できますか?

4

1 に答える 1

1

通常、実行時valgrindに初期化されていない変数を検出するために使用します。

コンパイル時ifort引数として何が必要かはわかりませんが、最適化も有効にする必要があります: .gfortran-Wuninitialized -O

これは役立つかもしれません。

EDIT:Intelによると、初期化されていない変数をチェックするときは最適化を無効にする必要がありますifort.

編集: Windowsを使用して初期化されていない変数を見つける方法がわかりませんが、Intel フォーラムからの投稿に出会いました:

現在、実行時の初期化されていない変数チェックの限定的な形式を提供していますが、おそらく限定的すぎて有用ではありません。Fortran Studio XE または Parallel Studio XE (または Cluster Studio XE) のライセンスを持つユーザーは、初期化されていない変数の検出を含む、プログラム全体の正確性チェックを行う静的解析機能を使用できます。これも完璧ではありませんが、非常に役立ちます。

そのツールにアクセスできるかもしれません。

于 2013-10-18T16:38:11.867 に答える