在 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
的函数,因此您可能更幸运地将断点放在那里,这对我有用,并且显然只会在您获得 运行 时间时触发错误。
我有一个使用 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
的函数,因此您可能更幸运地将断点放在那里,这对我有用,并且显然只会在您获得 运行 时间时触发错误。