Я использую компилятор intel fortran (ifort
) в среде mpi. Оказывается, мой код имеет переполнение буфера, так как я компилировал его с флагами -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
?