1

私はまだF77のデバッグに積極的であり、配列の境界にいくつかの問題があります。最近、長いコードを変更して、新しい配列サイズにしました。ある配列を変更したり、別の配列を変更したりする方法に気付くまで、すべてが「大丈夫」と思われました。このコードのどこかで、割り当てが範囲外であり、他の配列に書き込んでいると思います。

Linux環境に範囲外の例外を「キャッチ」するデバッガー/ツールはありますか?

私は現在gfortranを使用しています

4

2 に答える 2

2

gfortranが範囲外のチェックを挿入するためのフラグがあります

-fbounds-check配列の添え字、および宣言された最小値と最大値に対する実行時チェックの生成を有効にします。また、実際に割り当てられた境界に対して、想定および延期された形状配列の配列インデックスをチェックします。将来的には、これには他の形式のチェックも含まれる可能性があります。サブストリング参照をチェックします。

http://linux.die.net/man/1/gfortran

出力は希望どおりです。

At line 2153 of file src/cdtm0402.f
Fortran runtime error: Array reference out of bounds for array 'wv1mp', upper bound of dimension 1 exceeded (78 > 77)

Backtrace for this error:
  + function coefdp (0x448BC3)
    at line 2153 of file cdtm0402.f
  + in the main program
    at line 371 of file cdtm0402.f
  + /lib64/libc.so.6(__libc_start_main+0xfd) [0x7ffff703da7d]
于 2010-07-09T14:16:17.653 に答える
1

これが雇用主の場合は、「フリント」のライセンスを購入してもらうことをお勧めします。これは、Cの「リント」に似ていますが、Fortranのライセンスです。

また、gdb / dbx / dddはFortranデバッグを行いませんか?

ああ、「cc -g」のように、実行可能ファイルとオブジェクトファイルの文字列とデバッグ情報を維持するために、f77で特別なフラグをオンにする必要がある場合があります。

于 2010-07-08T19:50:39.107 に答える