英特尔Fortran---检查边界不';请不要给出行号

英特尔Fortran---检查边界不';请不要给出行号,fortran,command-line-arguments,intel-fortran,Fortran,Command Line Arguments,Intel Fortran,我正在mpi环境中使用英特尔fortran编译器(ifort)。事实证明,当我使用标志-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 R

我正在mpi环境中使用英特尔fortran编译器(
ifort
)。事实证明,当我使用标志
-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
实现这一点?

英特尔和波特兰集团Fortran编译器可以使用
-回溯
标志来请求在目标文件中生成额外信息,以进行行回溯和源回溯。当在运行时发生严重错误时,程序将尝试报告发生错误的行号和源文件,以及进行调用的父过程中的行号和源文件


gfortran的等效标志是
-fbacktrace

尝试将-traceback与当前标志一起使用。然后,编译器应在对象文件中生成附加信息,以定位在运行时发生错误的源代码行。我将对其进行测试,并在代码到达错误点后几分钟内返回给您。@IRO bot--成功了。发布一个答案,我很乐意接受。它仍然没有填满整个表——可能是因为一些“例程”被隐藏在运行库或其他什么地方,但它告诉了我需要查找的地方。