dbx コマンドによるデバッグ

例外の検出

プログラムが例外を受け取る原因は数多く考えられます。問題を見つける方法の 1 つとして、ソースプログラムで例外が発生した行番号を検出して調べる方法があります。

-ftrap =%all によってコンパイルすると、すべての例外に対してトラップが強制的に行われます。

例外が発生した箇所を検索します。


demo%  cat wh.f
      call joe(r,s)
      print *, r/s
      end
      subroutine joe(r,s)
      r=12.
      s=0.
      return
      end
demo% f77 -g -o wh -ftrap=%all wh.f
wh.f:
 MAIN:
        joe:
demo% dbx wh
wh の読み込み中
ld.so.1 の読み込み中
 .....
(dbx) catch FPE
(dbx) run
実行中: wh
(プロセス id 23464)
mb.so.1 の読み込み中
wcwidth.so.1 の読み込み中
シグナル FPE (ゼロによる浮動小数点徐算) 関数 MAIN 行番号 2  ファイル "wh.f"
    2         print *, r/s
(dbx)