在 gfortran 程序超出范围的数组上的 gdb 中设置断点

Set breakpoint in gdb on array out of bounds for gfortran program

我有一个使用 gfortran-fcheck=bounds 编译器选项编译的 Fortran 程序。这会导致代码报告 "array out of bounds" 错误并随后退出。

我想使用 gdb 调试我的程序以找出错误的原因。不幸的是,在 gdb 中,代码仍然会在出现越界错误时退出。

有没有办法告诉 gdb 在发生越界错误时停止执行?

要在 gdb 上设置断点,请使用命令 break 然后是要调试的文件的名称、冒号和要中断执行的行号:

break main.f90:24

将在程序 main 的第 24 行停止执行。然后可以使用step命令跳转到下一行等等。此时您可以使用 print 来检查您想要的任何变量的值。如果定义了其他断点,可以使用命令next直接跳转到下一个断点。

您需要使用 -g 标志编译您的程序才能使用 gdb

-g编译得到调试信息。然后,首先,我在 exit 上放置了一个断点,这工作正常,一旦程序停止,您将能够从 exit 回溯到错误点。

回溯还通过一个名为 _gfortran_runtime_error_at 的函数,因此您可能更幸运地将断点放在那里,这对我有用,并且显然只会在您获得 运行 时间时触发错误。