ユーザー・アプリケーションのトレース
このトピックでは、ユーザー・アプリケーションのトレースについて説明します。
トレース操作は、トレース・プロセス、コントローラー・プロセス、およびアナライザー・プロセスの 3 つの論理的に異なるプロセスによって決まります。 1 つのプロセスは、同時に、トレース・プロセス、コントローラー・プロセス、およびアナライザー・プロセスとなることができます。 トレース・プロセスの実行中にトレース・ポイントに達すると、このプロセスに関連付けられたトレース・イベント・タイプ ID がフィルタリングにより除外されていなければ、トレース・イベントがそのプロセス用に作成されたトレース・ストリームに記録されます。
- トレース・ストリームの属性を初期化します。
- 指定したトレース・プロセスに対して、初期化された属性を使用してトレース・ストリームを作成します。
- トレース・ストリームのトレースの開始および停止を行います。
- 記録されるトレース・イベントのタイプをフィルタリングします。
- トレース・ストリームを終了します。
アナライザー・プロセスは、トレース・ストリームがアクティブでトレース・イベントを記録しているランタイム時、または以前に記録されて終了されたトレース・ログを開いた後のいずれかにトレース・イベントを取得します。
posix_trace_create、posix_trace_create_withlog、および posix_trace_open のサブルーチンによりトレース・ストリーム ID が作成されます。 posix_trace_create と posix_trace_create_withlog のサブルーチンは、コントローラー・プロセスでのみ使用されます。 posix_trace_open サブルーチンは、アナライザー・プロセスでのみ使用されます。
トレース・プロセスには、プロセスに定義されたトレース・イベント・タイプ ID へのトレース・イベント名のマッピングが含まれます。 アクティブなトレース・イベントは、POSIX_TRACE_START などのシステムで定義済みのトレース・イベント・タイプと、トレース・プロセスに定義されているが、トレース・ストリームでフィルタリングにより除外されていないトレース・イベント・タイプを記録します。 マッピングを定義するには、計測対象のアプリケーションから posix_trace_eventid_open サブルーチンを呼び出すか、コントローラー・プロセスから posix_trace_trid_eventid_open サブルーチンを呼び出します。 事前に記録されていたトレース・ストリームの場合、トレース・イベント・タイプのリストは事前に記録されていたトレース・ログから取得されます。
トレース・サブルーチンは、事前に計測された可能性のあるコードのデバッグ、および事後の障害分析に使用できます。 事前に計測されたコードのデバッグは、膨大なトレース・ストリームを回避する事前フィルター機能を必要とします。これにより予期した情報に焦点を当てることを可能にします。 事後の障害分析では、すべてのタイプの情報を記録する包括的なトレース機能が必要となります。
- 計測対象のアプリケーションで生成されたユーザー・トレース・イベント。
- トレース制御操作に対応してオペレーティング・システムで生成されたシステム・トレース・イベント。
アクティブなトレース・ストリームに関連付けられたファイルでは、トレース操作でそのファイルが変更されるたびに st_ctime フィールドと st_mtime フィールドに更新のマークが付きます。
トレース・ストリームに関連付けられたファイルでは、トレース操作でデータがそのファイルから読み取られるたびに st_atime フィールドに更新のマークが付きます。
アクティブな、または事前記録されたトレース・ストリームに関連付けられたファイル・ディスクリプターで、アプリケーションが操作を実行する場合、結果が定義されるのは、そのトレース・ストリームの posix_trace_shutdown サブルーチンまたは posix_trace_close サブルーチンが呼び出された後です。