Go to the first, previous, next, last section, table of contents.

シグナル

シグナルは、プログラムにとっていつ発生するかわからない、非同期の イベントです。オペレーティング・システムは、シグナルとして利用可能な 種類を定義し、それぞれに名前と番号を割り振っています。 例えば、SIGINT は、あなたが Ctrl-c を入力した時に プログラムが得るシグナルであり; SIGSEGV はプログラムが利用 可能なメモリ領域を逸脱して参照した時に発生し; SIGALRM は (プログラムがアラームを要求した時にのみ発生するのですが) アラームクロック・タイマの時間が来た時に発生します。

SIGALRM を含むあるシグナルは、プログラムの機能として正常な ものです。反面、SIGSEGV のようなものはエラーを含んでいます; これらのシグナルは、プログラムが前もってなんらかの方法でシグナルを 処理するように記述されていない限り、(プログラムが即座に kill される ような) 致命的なものです。 SIGINT はプログラムのエラーには含まれませんが、Ctrl-c の 結果としてプログラムが kill されるので、普通、致命的です。

GDB には、GDB のコントロールの下で動作するプログラムが発生させる シグナルをキャッチする能力があります。あなたは、GDB に対して、 前もって各々のシグナルをどう処理するのかを指示することができます。

通常、GDB は SIGALRM のような (そのインタフェースにより プログラムの機能として働く) エラーでないシグナルを無視するように 設定されています。しかし、エラーシグナルが発生した場合は、即座に プログラムを停止させます。あなたは、これらの設定を `handle' コマンドによって変更することができます。この場合、対象となるシグナルを 番号によって指示しなければなりません。

info signal
シグナルの種類の一覧表を表示し、GDB が、各々をどう処理するのかを 示します。あなたは、このコマンドを使うことによって、 シグナルの型として定義されている番号を知ることができます。
handle signalnum keywords...
GDB が signalnum で表されるシグナルを処理する方法を変更します。 keywords はどのような変更なのかを指示します。

`handle' コマンドを使う場合、あなたは、関心のあるシグナルの コードナンバーを知っておかなければなりません。コードナンバーを知る には、シグナル名と番号の一覧表を表示する `info signal' コマンドを 入力して下さい。

handle コマンドに許可されているキーワードは、短く省略できるように なっています。それらのフルネームは以下の通りです。

stop
シグナルが発生した場合、GDB はプログラムを停止します。 このキーワードは、`print' キーワードとともに良く指定されます。
print
GDB は、シグナルが発生した場合、メッセージを表示するようになります。
nostop
シグナルが発生した場合、GDB はプログラムを停止させません。これは、 シグナルが起こったというメッセージをあなたに知らせるだけです。
noprint
GDB は、シグナルの発生を報告しません。 これは、`nostop' キーワードとともに利用されます。
pass
GDB は、そのシグナルをプログラムが受け取ることを許可します; プログラムはシグナルを処理できるようになりますが、致命的なシグナルを 処理していない場合は停止させられます。
nopass
GDB は、プログラムがシグナルを受け取ることを許可しません。

シグナルがプログラムを停止させるように設定されていたならば、 あなたが処理を継続させない限り、プログラムはシグナルを受け取る ことができません。また、問題のシグナルに対して、その時 `pass' が 有効であれば初めて、プログラムはシグナルを受け取ることができます。 言い換えれば、GDB がシグナルを報告した後で、あなたは `pass'`nopass' を記述した `handle' コマンドを使って、その直後に プログラムが継続された時にシグナルを見ることができるかどうかを コントロールすることができます。

あなたはまた、`signal' コマンドを使って、プログラムがシグナルを 受け取ることを妨げたり、通常見ることのできないシグナルを見れるように したり、また、いつでも好きなときに好きなシグナルを送ることができます。 See section プログラムへのシグナルの送信


Go to the first, previous, next, last section, table of contents.