Catch

使用法

指定したシグナルが生成されたときにプロセス制御をデバッガーに戻します。また、指定した ON-unit またはすべてのデフォルトの ON-unit の通知をオンにします。

コマンド構文

CATCH {/DEFAULT | [/NIGNORE|/IGNORE] signal}

または

CATCH {ON-unit}{/DEFAULT}

詳細は次のとおりです。

signal
シグナル名の呼び名 (SIGALRM や SIGINT など) またはその呼び名に対応するシグナル番号のいずれかを指定します。シグナル名は大文字でも小文字でも指定できます。
ON-unit
ON-unit を呼び出す条件がデバッガーで検出されたときに通知を受け取る ON-unit の名前。

説明

キャッチして無視するように設定 (/IGNORE) されたシグナルが発生すると、プロセス制御がデバッガーに戻ります。その後に子プロセスが (Step や Continue などを使用して) 再開されると、指定したシグナルが発生していないものとして処理が続行されます。

キャッチして無視しないように設定 (/NIGNORE) されたシグナルが発生すると、プロセス制御がデバッガーに戻ります。その後に子プロセスが再開されると、指定した信号が発生したものとして処理が続行されます。キャッチするように設定されていないシグナルが発生した場合は、プロセス制御がデバッガーに戻りません。

デフォルトでは、特定のシグナルおよび ON-unit がデバッガーによってキャッチされます。Default オプションを指定すると、CATCH のすべての設定がデバッガーのデフォルトの設定にリセットされます。

現在のシグナルおよび ON-unit の設定のリストを取得するには、LCATCH /ALL コマンドを使用します。

注: シグナル SIGILL および SIGTRAP については、デバッガーで常に無視するように設定されています。これらはデバッガーでブレークポイントに使用される特別なシグナルです。これらの 2 つのシグナルの設定は変更できません。

次の例では、SIGALRM が生成されると、プロセス制御が子プロセスからデバッガーに戻ります。

CodeWatch> CATCH /IGNORE SIGALRM
Changing SIGALRM to be caught and ignored.

子プロセスが再開されると、SIGALRM は無視され、SIGALRM が生成されていないものとして処理が続行されます。

次の例の番号 28 はシグナル SIGWINCH を表しています。SIGWINCH が生成されると、プロセス制御が子プロセスからデバッガーに戻ります。

CodeWatch> CATCH /NIGNORE 28
Changing SIGWINCH to be caught and not ignored.

子プロセスが再開されると、シグナル SIGWINCH が認識され、SIGWINCH が発生したものとして処理が続行されます。

次の例では、ENDFILE ON-unit の通知をオンにします。

CodeWatch> CATCH ENDFILE
Adding ENDFILE to be caught.
注: /IGNORE および /NIGNORE フラグは、CATCH で ON-unit を指定する場合は使用されません。使用しても、次の例のメッセージが表示されて無視されます。
CodeWatch> CATCH /IGNORE ENDFILE
/IGNORE and NIGNORE flags are not allowed with On units - ignored.
Adding ENDFILE to be caught.