4.11 Unix シグナルの処理

ARM® プロセッサには、Unix シグナルをトラップするための Linux アプリケーション向け機能が用意されています。

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

ヒント

Handまた、info signals コマンドを使用して、ハンドラの現在の設定を表示することもできます。
デフォルトのハンドラ設定は、デバッグアクティビティのタイプによって異なります。デフォルトでは、例えば Linux カーネルの接続の場合、すべてのシグナルがターゲット上の Linux によって処理されます。
図 4-8 [信号の管理]ダイアログ(Unix シグナル)
[信号の管理]ダイアログ(Unix シグナル)

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

例 4-3 例

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