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

时间:2016-06-15 14:40:07

标签: fortran gdb indexoutofboundsexception gfortran

我有一个用gfortran编译的Fortran程序和-fcheck=bounds编译器选项。这会导致代码报告“数组越界”错误并随后退出。

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

当出现越界错误时,有没有办法告诉gdb停止执行?

2 个答案:

答案 0 :(得分:6)

使用-g进行编译以获取调试信息。然后,首先,我在exit上设置了一个断点,这个工作正常,一旦程序停止,你就可以从exit回溯到错误点。

回溯也通过一个名为_gfortran_runtime_error_at的函数,所以你可能有更多的运气将断点放在那里,这对我有用,显然只会在你遇到运行时错误时触发。

答案 1 :(得分:1)

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

break main.f90:24

将停止程序main第24行的执行。然后,您可以使用step命令跳转到下一行,依此类推。此时,您可以使用print检查所需变量的值。如果已定义另一个断点,则可以使用命令next直接跳转到下一个断点。

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