Objektverweisablaufverfolgung

Das Feature Objektverweisablaufverfolgung zeichnet sequenzielle Stapelablaufverfolgungen jedes Mal auf, wenn ein Objektverweisindikator erhöht oder erhöht wird. Die Ablaufverfolgungen können Ihnen helfen, Objektverweisfehler zu erkennen, z. B. Doppeltes Dereferencing, Fehler beim Verweisen und Fehler bei Dereferenzobjekten. Dieses Feature wird nur in Windows Vista und höheren Versionen von Windows unterstützt.

Informationen zum Konfigurieren der Funktion Objektverweisablaufverfolgung im Dialogfeld Globale Flags finden Sie unter Konfigurieren der Objektverweisablaufverfolgung. Informationen zum Konfigurieren der Funktion Objektverweisablaufverfolgung an der Eingabeaufforderung finden Sie unter GFlags-Befehle. Ein Beispiel finden Sie unter Beispiel 15: Verwenden der Objektverweisablaufverfolgung.

Objektverweisablaufverfolgungen sind am nützlichsten, wenn Sie vermuten, dass auf ein bestimmtes Objekt nicht ordnungsgemäß verwiesen oder dereferiert wird, in der Regel, weil eine erhöhte Poolnutzung darauf hindeutet, dass ein Objekt undicht ist oder ein Prozess oder eine Sitzung nicht beendet werden kann, obwohl die Handleanzahl 0 ist. Im Gegensatz zu Ablaufverfolgungen, die zur späteren Überprüfung in Protokollen aufgezeichnet werden, sind Objektverweisablaufverfolgungen so konzipiert, dass sie in Echtzeit verwendet werden, während der Prozess ausgeführt wird und auf das Objekt verwiesen und abgeleitet wird. Sie können eine Objektverweisablaufverfolgung im Debugger mithilfe der Debuggererweiterung !obtrace anzeigen. Da diese Erweiterung eine angegebene Objektadresse erfordert, müssen Sie im Voraus wissen, welches Objekt die wahrscheinliche Fehlerquelle ist.

Die folgenden Regeln gelten für die Objektverweisablaufverfolgung:

  • Sie können jeweils nur eine Objektverweisablaufverfolgung ausführen.

  • Da eine kernelweite Ablaufverfolgung nicht praktikabel ist, müssen Sie die Ablaufverfolgung auf Objekte beschränken, die mit angegebenen Pooltags erstellt werden, oder auf Objekte, die von einem angegebenen Prozess (durch einen Imagedateinamen angegeben) erstellt werden, oder beides.

  • Sie können nur eine Bilddatei für jede Ablaufverfolgung angeben. Wenn Sie eine Imagedatei angeben, ist die Ablaufverfolgung auf Objekte beschränkt, die von den Prozessen erstellt werden, die das Image darstellt. Objekte, auf die der Prozess verweist, aber von einem anderen Prozess erstellt werden, werden nicht nachverfolgt.

  • Sie können maximal 16 Pooltags für jede Ablaufverfolgung angeben. Objekte mit einem der angegebenen Pooltags werden nachverfolgt.

  • Wenn Sie sowohl eine Imagedatei als auch mindestens ein Pooltag angeben, ist die Ablaufverfolgung auf Objekte beschränkt, die vom Prozess erstellt werden und über eines der angegebenen Pooltags verfügen.

  • Objektverweisablaufverfolgung kann prozesse nicht nachverfolgen, die bereits ausgeführt werden, wenn eine Ablaufverfolgung gestartet wird. Die Ablaufverfolgung umfasst nur die Objekte von Prozessen, die nach dem Beginn der Ablaufverfolgung gestartet werden.

  • Für die Ablaufverfolgung markierte Objekte werden nachverfolgt, bis das Objekt zerstört oder die Ablaufverfolgung deaktiviert ist. Standardmäßig werden die Ablaufverfolgungen für ein Objekt nur beibehalten, bis das Objekt zerstört wird. Sie können jedoch eine "permanente" Ablaufverfolgung (/p) angeben, bei der die Ablaufverfolgung beibehalten wird, bis die Ablaufverfolgung deaktiviert ist.

  • Sie können die Konfiguration der Objektverweisablaufverfolgung als Registrierungseinstellung oder als Kernelflageinstellung (Laufzeit) speichern. Wenn Sie sowohl Registrierungs- als auch Kernelflagseinstellungen haben, haben die Laufzeiteinstellungen Vorrang, gehen aber verloren, wenn Sie den Computer herunterfahren oder neu starten.