有许多原因可导致程序异常。一种定位故障的方法是在源程序中找到发生异常的行号,然后在该处寻找线索。
编译时使用 -ftrap=common 可强制捕获所有常见异常。
查找异常发生位置:
demo% cat wh.f
call joe(r, s)
print *, r/s
end
subroutine joe(r,s)
r = 12.
s = 0.
return
end
demo% f95 -g -o wh -ftrap=common wh.f
demo% dbx wh
Reading symbolic information for wh
(dbx) catch FPE
(dbx) run
Running: wh
(process id 17970)
signal FPE (floating point divide by zero) in MAIN at line 2 in file “wh.f”
2 print *, r/s
(dbx)