Oracle® Solaris Studio 12.4: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2015 年 1 月
 
 

例外処理コマンド

このセクションでは、例外を処理するための dbx コマンドについて説明します。

exception コマンド

exception コマンドの構文を次に示します。

exception [–-d | –+d]

exception コマンドを使用して、デバッグ時にいつでも 例外の型を表示します。オプションなしで exception コマンドを実行した場合に、表示される型は dbxenv 変数 output_dynamic_type の設定によって判断されます。

  • この変数を on に設定すると、派生型が表示されます。

  • この変数を off (デフォルト) に設定すると、静的な型が表示されます。

    -d または +d オプションを指定すると、環境変数の設定がオーバーライドされます。

  • -d を設定すると、派生型が表示されます。

  • +d を設定すると、静的な型が表示されます。

詳細については、exception コマンドを参照してください。

intercept コマンド

intercept コマンドの構文を次に示します。

intercept [-all] [-x] [-set] [typename]

スタックを解放する前に、 特定の型の例外を阻止または捕獲できます。

  • intercept コマンドを引数を付けずに使用すると、阻止される型がリストで示されます。

  • -all を使用すると、すべての例外が阻止されます。阻止リストに型を追加するには typename を使用します。

  • -x を使用すると、特定の型を除外リストに格納し、阻止から除外することができます。

  • -set を使用すると、阻止リストと除外リストの両方をクリアし、リストを、指定した型のスローのみを阻止または除外するように設定します。

たとえば、int を除くすべての型を阻止するには:

(dbx) intercept -all -x int

Error 型の例外を阻止するには:

(dbx) intercept Error

次のコマンドで多すぎる CommonError 例外を阻止した後:

(dbx) intercept -x CommonError

intercept コマンドを引数なしで入力すると、処理されていない例外と予期されない例外を含んだ阻止リストが表示されます。これらの例外はデフォルトで阻止され、それに加えてクラス CommonError を除くクラス Error の例外が阻止されます。

(dbx) intercept
-unhandled   -unexpected   class Error -x class CommonError

Error が目的の例外のクラスではなく、探している例外クラスの名前が分からない場合は、次のように入力すると、クラス Error 以外のすべての例外を阻止できます。

(dbx) intercept -all -x Error

詳細については、intercept コマンドを参照してください。

unintercept コマンド

unintercept コマンドの構文を次に示します。

unintercept [-all] [-x] [typename]
  • unintercept コマンドは、 阻止リストまたは除外リストから例外の型を削除するために使用します。

  • 引数を付けずにこのコマンドを使用すると、阻止されている型のリストが示されます (intercept コマンドに同じ)。

  • -all を使用すると、阻止リストからすべての型を削除することができます。typename を使用すると、阻止リストから 1 つの型を削除することができます。-x を使用すると、除外リストから 1 つの型を削除することができます。

詳細については、unintercept コマンドを参照してください。

whocatches コマンド

whocatches コマンドは、 typename の例外が実行の現在のポイントでスローされた場合に、捕獲される場所を報告します。このコマンドは、例外がスタックのトップフレームから送出された場合に何が起こるかを検出する場合に使用します。

typename を捕獲した元の送出の行番号、関数名、およびフレーム数が表示されます。捕獲ポイントがスローを行なっている関数と同じ関数内にあると、このコマンドは、「type is unhandled」というメッセージを表示します。

詳細については、whocatches コマンドを参照してください。