3.12 UNIX シグナルの処理

Linux アプリケーションをデバッグする場合は、デバッガを構成して、UNIX シグナルの向上を停止または報告するようにデバッグを構成することができます。

デバッガで UNIX シグナルを管理するには、以下のいずれかを行います。
  • [ブレークポイント]ビューのメニューから[信号の管理]を選択します。
    情報を停止または出力する個々のシグナルを選択して、[OK]をクリックします。結果は[コマンド]ビューに表示されます。
  • handle コマンドを使用して、[コマンド]ビューに結果を表示します。

ヒント

Handまた、 info signals コマンドを使用して、シグナルハンドラの現在の設定を表示することもできます。
図 3-8 信号ダイアログの管理(UNIX シグナル)
信号ダイアログの管理(UNIX シグナル)

UNIX シグナルである SIGINTSIGTRAP は、それぞれプロセスとブレークポイントを非同期停止するためにデバッガによって内部で使用されるため、他のシグナルと同じ方法でデバッグできません。

例 3-3 信号の管理

シグナルを無視するが、シグナルがトリガされたときにイベントをログするようアプリケーションで指定するには、シグナルに基づく停止をイネーブルする必要があります。
SIGHUP シグナルの無視
以下の例では、SIGHUP 信号が発生すると、デバッガが停止し、メッセージが出力されます。この設定を使用すると、シグナルハンドラは呼び出されず、デバッグ対象のアプリケーションはシグナルを無視して、実行を継続します。
handle SIGHUP stop print                # SIGHUP シグナルで停止と出力をイネーブル
SIGHUP シグナルのデバッグ
以下の例は、シグナルハンドラのデバッグ方法を示しています。
これを行うには、シグナルに基づく停止をディセーブルして、シグナルハンドラでブレークポイントを設定する必要があります。これが必要となるのは、シグナルに基づく停止がディセーブルされている場合、そのシグナルの処理は、登録されたハンドラにシグナルを渡すプロセスによって実行されるためです。ハンドラが登録されていない場合は、デフォルトのハンドラが実行され、通常、アプリケーションは終了します。
handle SIGHUP nostop noprint             # SIGHUP シグナルで停止と出力をディセーブル
関連する概念
6.9 共有ライブラリのデバッグについて
6.10.2 Linux カーネルのデバッグについて
6.10.3 Linux カーネルモジュールのデバッグについて
関連する参考文書
3.2 アプリケーションの実行、停止、およびステップ実行
5.1 ターゲット実行環境の検査
5.2 コールスタックの検査
3.13 プロセッサ例外処理
11.4 [Breakpoints]ビュー
11.6 [Commands]ビュー
11.35 [Manage Signals]ダイアログボックス
関連情報
DS-5 デバッガコマンド
非機密扱いPDF file icon PDF 版ARM DUI0446WJ
Copyright © 2010-2015 ARM.All rights reserved.