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

dbx を使用した浮動小数点例外の検索

浮動小数点例外 (FPE) を捕獲する場合は、次の 2 つのことを実行する必要があります。まず、プロセスを停止して、次のように入力します。


(dbx) catch FPE

次に、次のコードを Fortran アプリケーションに追加します。


integer ieeer, ieee_handler, myhandler
ieeer = ieee_handler('set', 'all', myhandler)
...
        
integer function myhandler(sig, code, context)
integer sig, code(5)
call abort()
end

これは、IEEE ソフトウェアがすべてのエラーをサイレント (シグナルを出さない状態) に設定するために必要です。これにより、すべての IEEE 例外が必要に応じて SIGFPE を生成します。

ieee_handler() のパラメータを調整するか、または dbx catch コマンドの代替を使用すると、表示する例外をさらに調整することができます。


stop sig FPE

これは、catch FPE または次のコードと同様に作動します。


stop sig FPE subcode

さらに細かく制御するには、subcode を次のように指定できます。

FPE_INTDIV

整数のゼロ除算 

FPE_INTOVF

整数オーバーフロー 

FPE_FLTDIV

浮動小数点のゼロ除算 

FPE_FLTOVF

浮動小数点オーバーフロー 

FPE_FLTUND

浮動小数点アンダーフロー 

FPE_FLTRES

浮動小数点の不正な結果 

FPE_FLTINV

無効な浮動小数点操作 

FPE_FLTSUB

範囲外の添字 

stopcatch は無関係であり、stop FPE を使用する場合は ignore FPE も必要であることに注意してください。