Unix シグナルの処理

ARM プロセッサには、Unix 信号をトラップするための Linux アプリケーション向け機能が用意されています。これらは、[Breakpoints]ビューのメニュから[Manage Signals]を選択するか、handle コマンドを使用して、デバッガで管理できます。また、info signals コマンドを使用して、ハンドラの現在の設定を表示することもできます。

デフォルトのハンドラ設定は、デバッグアクティビティのタイプによって異なります。デフォルトでは、例えば Linux カーネルの接続の場合、すべてのシグナルがターゲット上の Linux によって処理されます。

Figure 14. シグナルハンドラ設定の管理

シグナルハンドラ設定の管理

Note

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

Show/hide

シグナルを無視するが、シグナルがトリガされたときにイベントをログするようアプリケーションで指定するには、シグナルに基づく停止をイネブルする必要があります。以下の例では、SIGHUP 信号が発生すると、デバッガが停止し、メッセージが出力されます。この設定を使用すると、シグナルハンドラは呼び出されず、デバッグ対象のアプリケーションはシグナルを無視して、実行を継続します。

Example 2. SIGHUP シグナルの無視

handle SIGHUP stop print                # SIGHUP シグナルに基づく停止と出力をイネーブル

以下の例は、シグナルハンドラのデバッグ方法を示しています。これを行うには、シグナルに基づく停止をディセーブルして、シグナルハンドラブレークポイントを設定する必要があります。これが必要となるのは、シグナルに基づく停止がディセーブルされている場合、そのシグナルの理は、登録されたハンドラにシグナルを渡すプロセスによって実行されるためです。ハンドラが登録されていない場合は、デフォルトのハンドラが実行され、通常、アプリケーションは終了します。

Example 3. SIGHUP シグナルのデバッグ

handle SIGHUP nostop noprint             # SIGHUP シグナルに基づく停止と出力をディセーブル

Show/hide関連項目

Copyright © 2010, 2011 ARM. All rights reserved.ARM DUI 0446FJ
Non-ConfidentialID111611