Oracle® Solaris Studio 12.4: 数値計算ガイド

印刷ビューの終了

更新: 2015 年 1 月
 
 

4.4 例外の特定

例外が発生した場所を特定する方法の 1 つは、プログラム内のさまざまな箇所で例外フラグをテストすることです。ただし、この方法で正確に例外を特定するには、多くのテストが必要になり、大きなオーバーヘッドを伴う可能性があります。

例外が発生した場所を判別する簡単な方法は、例外のトラップを有効にすることです。トラップが有効にされている例外が発生すると、オペレーティングシステムは SIGFPE シグナルを送信することによってプログラムに通知します。signal(5) のマニュアルページを参照してください。したがって、例外のトラップを有効にすると、デバッガで実行して SIGFPE シグナルを受信した時点で停止するか、例外が発生した命令のアドレスを出力するように SIGFPE ハンドラを設定して、例外の発生箇所を判別できます。SIGFPE シグナルが生成されるようにするには、例外のトラップを有効にしておく必要があります。トラップが無効になっている場合に例外が発生すると、対応するフラグが設定され、プログラムの実行は Table 4–1 に示されているデフォルトの結果で継続されますが、シグナルは送信されません。