9

ifortmpi 環境でintel fortran コンパイラ ( ) を使用しています。flags を指定してコンパイルすると、コードにバッファ オーバーフローが発生することが判明しました-g -O2 -check bounds。しばらく実行すると、次のメッセージが表示されます。

forrtl: severe (408): fort: (2): Subscript #1 of the array XX has value 4 which is greater than the upper bound of 3

Image            PC                Routine            Line        Source             
program.exe      00000000006E757E  Unknown               Unknown  Unknown
program.exe      00000000006E6016  Unknown               Unknown  Unknown
program.exe      00000000006905B2  Unknown               Unknown  Unknown
program.exe      0000000000642E6B  Unknown               Unknown  Unknown
program.exe      0000000000643381  Unknown               Unknown  Unknown
program.exe      00000000005F33FB  Unknown               Unknown  Unknown
program.exe      00000000004139E7  Unknown               Unknown  Unknown
program.exe      000000000040A6B4  Unknown               Unknown  Unknown
program.exe      0000000000409D2C  Unknown               Unknown  Unknown
libc.so.6        000000380D61ECDD  Unknown               Unknown  Unknown
program.exe      0000000000409C29  Unknown               Unknown  Unknown

これは素晴らしいことです。オーバーランしていることはわかりましたXXが、どこでしょうか? を使用するとgfortran-fbounds-checkファイルと行番号が表示されます。それを得る方法はありますifortか?

4

1 に答える 1

8

-tracebackIntelおよびPortlandGroupFortranコンパイラでフラグを使用して、ラインおよびソーストレースバックのオブジェクトファイルに生成される追加情報を要求できます。実行時に重大なエラーが発生した場合、プログラムは、エラーが発生した行番号とソースファイル、および呼び出しが行われた親プロシージャからの行番号とソースファイルを報告しようとします。

gfortranの同等のフラグはです-fbacktrace

于 2013-02-21T19:19:52.867 に答える