次の方法で共有


Object Reference Tracing

オブジェクト参照トレース 機能は、オブジェクト参照カウンタが増加または減少するたびに、順次スタック トレースを記録します。 このトレースは、二重逆参照、参照の失敗、オブジェクト逆参照の失敗など、オブジェクト参照エラーを検出するのに役立ちます。 この機能は、Windows Vista 以降のバージョンの Windows でのみサポートされます。

オブジェクト参照トレース機能の設定の詳細については、 世界的なフラグ ダイアログ ボックス、 オブジェクトリファレンストレースの設定。 コマンド プロンプトでオブジェクト参照トレース機能を構成する方法については、「 GFlags コマンド」を参照してください。 例については、「 例 15: オブジェクト参照トレースの使用」を参照してください。

オブジェクト参照トレースは、特定のオブジェクトが正しく参照または逆参照されていないと思われる場合に最も役立ちます。通常、プールの使用率の増加は、オブジェクトがリークしていることを示しているか、ハンドル数が 0 であってもプロセスまたはセッションを終了できないことが原因です。 後で確認するためにログに記録されるトレースとは異なり、オブジェクト参照トレースは、プロセスが実行中であり、オブジェクトが参照および逆参照されている間、リアルタイムで使用されるように設計されています。 デバッガーでオブジェクト参照トレースを表示するには、 !obtrace デバッガー拡張機能 を使用します。 この拡張機能には指定されたオブジェクト アドレスが必要であるため、エラーの原因となる可能性のあるオブジェクトを事前に把握しておく必要があります。

オブジェクト参照トレースには、次の規則が適用されます。

  • 一度に実行できるオブジェクト参照トレースは 1 つだけです。

  • カーネル全体のトレースは実用的ではないため、指定したプール タグを使用して作成されたオブジェクト、または指定されたプロセスによって作成されたオブジェクト (イメージ ファイル名で示される) またはその両方にトレースを制限する必要があります。

  • トレースごとに指定できるイメージ ファイルは 1 つだけです。 イメージ ファイルを指定した場合、トレースは、イメージが表すプロセスによって作成されるオブジェクトに限定されます。 プロセスによって参照されているが、別のプロセスによって作成されたオブジェクトはトレースされません。

  • トレースごとに最大 16 個のプール タグを指定できます。 指定されたプール タグのいずれかを持つオブジェクトがトレースされます。

  • イメージ ファイルと 1 つ以上のプール タグの両方を指定した場合、トレースはプロセスによって作成され、指定されたプール タグを持つオブジェクトに制限されます。

  • オブジェクト参照トレースは、トレースの開始時に既に実行されているプロセスをトレースできません。 トレースには、トレースの開始後に開始されるプロセスのオブジェクトのみが含まれます。

  • トレース対象としてマークされたオブジェクトは、オブジェクトが破棄されるか、トレースが無効になるまでトレースされます。 既定では、オブジェクトのトレースはオブジェクトが破棄されるまでメイン保持されますが、トレースが無効になるまでトレースを保持する "永続的" トレース (/p) を指定できます。

  • オブジェクト参照トレース構成は、レジストリ設定またはカーネル フラグ (実行時) 設定として格納できます。 レジストリとカーネル フラグの両方の設定がある場合は、実行時の設定が優先されますが、コンピューターをシャットダウンまたは再起動すると失われます。