0

valgrindを使用してFortran90プログラムをデバッグしています。トレースにこれがあるとエラーが発生します

==93929== Use of uninitialised value of size 4
==93929==    at 0x7C3D4B: for__add_to_lf_table 
==93929==    by 0x8014A8: for__open_proc.
==93929==    by 0x7C7B0F: for__open_default 
==93929==    by 0x7F3648: for_write_seq_lis 
<rest of my application backtrace>

そして、それが私の間違いなのか、それとも単に内部ライブラリの癖なのかはわかりません。これらの機能の機能やその他の関連情報を知りたいのですが。

macosxでifort(IFORT)11.1 20100806、valgrind3.6.0をコンパイルしています。

associated(ptr)編集:組み込みが使用されている場合、または使用されている場合に、valgrindエラーの発生を見つけることができましたprint *。いずれにせよ、私はそれらのルーチンが何を担当しているのか知りたいだけです。lfテーブルとは何ですか?

4

1 に答える 1

0

私の推測では、名前が始まるシンボルはfor_ 、プログラムが使用するランタイム ライブラリ (おそらく Intel コンパイラで提供されるもの) で定義されていると思います。ステファノ、あなたは自分でそれを理解したと思います。Fortran のさまざまな操作を実装します。

valgrind が初期化されていない値を使用したと不平を言うエラーの原因を追跡するために何をしましたか? オプションを付けてコンパイルしてみました-check uninitか? コードで Intel ソースチェッカーを試しましたか?

編集:ああ。Fortran の特性の 1 つは、ポインターが宣言されてから、最初にターゲットに関連付けられるまでの間、ポインターは関連付け状態を持たないことです。関連付けられているわけでも関連付けられていないわけでもありません。ASSOCIATED を呼び出すと、おかしな結果が生じる場合があります。標準によれば、たとえば、.true.またはを返すべきではありません.false.。これが問題の原因である可能性がありますが、報告された他の症状はこの方法を示していません.

于 2010-12-14T17:42:34.627 に答える