Share via


Beispiel 15: Verwenden der Objektverweisablaufverfolgung

Objektverweisablaufverfolgung ist ein Windows-Feature, das eine sequenzielle Stapelablaufverfolgung aufzeichnet, wenn auf ein Objekt verwiesen oder abgeleitet wird. Es wurde entwickelt, um Fehler bei der Objektverarbeitung zu erkennen, die zu Abstürze oder Speicherverlusten führen können. Einige dieser Fehler sind schwer zu erkennen, da sie nicht konsistent angezeigt werden. Ausführliche Informationen finden Sie unter Objektverweisablaufverfolgung.

Sie können die Objektverweisablaufverfolgung mithilfe des Dialogfelds Globale Flags oder an einer Eingabeaufforderung konfigurieren. In den folgenden Beispielen wird die Eingabeaufforderung verwendet. Informationen zur Verwendung des Dialogfelds Globale Flags zum Konfigurieren der Objektverweisablaufverfolgung finden Sie unter Konfigurieren der Objektverweisablaufverfolgung.

Sie können Gflags verwenden, um die Objektverweisablaufverfolgung zu aktivieren, zu deaktivieren und zu konfigurieren. Der Prozess sieht folgendermaßen aus:

  • Verwenden Sie Gflags, um die Objektverweisablaufverfolgung in der Registrierung oder als Kernelflagge (Laufzeit) zu aktivieren. Wenn Sie die Einstellung zur Registrierung hinzufügen, müssen Sie den Computer neu starten, um die Ablaufverfolgung zu starten. Wenn Sie die Laufzeitversion der Einstellungen aktivieren, wird die Ablaufverfolgung sofort gestartet, aber die Ablaufverfolgungseinstellungen rückgängig machen zu denen im Registrierungsschlüssel, wenn Sie den Computer herunterfahren oder neu starten.

  • Starten Sie den Prozess, der das verdächtige Objekt erstellt. Die Ablaufverfolgung umfasst nur Objekte, die von Prozessen erstellt wurden, die nach Beginn der Ablaufverfolgung gestartet werden. Wenn der Prozess während oder kurz nach dem Neustart gestartet wird, fügen Sie der Registrierung die Ablaufverfolgungseinstellungen hinzu, und starten Sie das System dann neu.

  • Verwenden Sie dieDebuggererweiterung!obtrace, um die Ablaufverfolgung anzuzeigen. Standardmäßig wird die Ablaufverfolgung beibehalten, bis das Objekt zerstört wird. Sie können jedoch den /p-Parameter verwenden, um die Ablaufverfolgung beizubehalten, bis die Ablaufverfolgung deaktiviert ist.

  • Verwenden Sie Gflags, um objektverweisablaufverfolgung.in der Registrierung oder als Kernelflag (Laufzeit) Einstellung zu deaktivieren. Wenn Sie die Einstellung aus der Registrierung löschen, müssen Sie den Computer neu starten, um die Ablaufverfolgung zu beenden. Wenn Sie die Laufzeitversion der Einstellungen deaktivieren, wird die Ablaufverfolgung sofort beendet, aber die Ablaufverfolgungseinstellungen rückgängig machen zu denen in der Registrierung, wenn Sie den Computer herunterfahren oder neu starten.

In diesen Beispielen wird gezeigt, wie Sie Gflags verwenden, um die Objektverweisablaufverfolgung zu aktivieren und zu deaktivieren. \

Aktivieren der Laufzeitablaufverfolgung

Der folgende Befehl aktiviert die Objektverweisablaufverfolgung an der Eingabeaufforderung. Der Befehl verwendet den Parameter /ko , um die Objektverweisablaufverfolgung als Kernelflageinstellung (Laufzeit) zu aktivieren. Der Befehl verwendet den Parameter /t , um die Pooltags Tag1 und Fred anzugeben. Daher werden alle Objekte, die mit Tag1 oder Fred erstellt werden, nachverfolgt.

gflags /ko /t Tag1;Fred

Da der Befehl die Kernelflagseinstellungen (Laufzeit) ändert, wird die Objektverweisablaufverfolgung sofort gestartet. Die Ablaufverfolgung umfasst alle Objekte mit den Pooltags Tag1 oder Fred , die von Prozessen erstellt werden, die nach der Übermittlung des Befehls gestartet werden.

Gflags antwortet, indem es die folgende Meldung ausgibt:

Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Diese Meldung gibt an, dass objektverweisablaufverfolgung aktiviert ist. "Temporäre Ablaufverfolgungen" gibt an, dass alle Datensätze der Ablaufverfolgung gelöscht werden, wenn das Objekt zerstört wird. Um die Ablaufverfolgung dauerhaft zu machen, verwenden Sie den Parameter /p , der Windows anwies, die Ablaufverfolgungsdaten beizubehalten, bis die Objektverweisablaufverfolgung deaktiviert oder der Computer heruntergefahren oder neu gestartet wird.

Aktivieren der Ablaufverfolgung in der Registrierung

Mit dem folgenden Befehl wird der Registrierung eine Objektverweisablaufverfolgungskonfiguration hinzugefügt. Die von Ihnen konfigurierte Ablaufverfolgung beginnt beim Neustart des Computers.

Der Befehl verwendet den Parameter /ro , um die Objektverweisablaufverfolgung als Registrierungseinstellung zu aktivieren. Der Befehl verwendet den /i , um den Prozess für notepad.exe und den Parameter /t anzugeben, um die Pooltags Tag1 und Fred anzugeben. Daher werden alle Objekte, die vom Editor-Prozess mit den Tag1- oder Fred-Pooltags erstellt werden, nachverfolgt. Der Befehl verwendet auch den Parameter /p , der die Ablaufverfolgungsdaten speichert, bis die Ablaufverfolgung deaktiviert ist.

gflags /ro /t Tag1;Fred /i Notepad.exe /p

Wenn Sie den Befehl übermitteln, speichert Gflags die Informationen in der Registrierung. Da die Registrierungseinstellungen jedoch erst wirksam sind, wenn Sie den Computer neu starten, wird diese Objektverweisablaufverfolgung konfiguriert, aber noch nicht gestartet.

Gflags antwortet, indem es die folgende Meldung ausgibt:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Die Meldung gibt an, dass objektverweisablaufverfolgung in der Registrierung aktiviert ist. "Permanent Traces" gibt an, dass die Ablaufverfolgungsdaten so lange aufbewahrt werden, bis Sie den Computer herunterfahren oder neu starten. In der Nachricht werden auch die Pooltags und Imagedateinamen aufgelistet, die nachverfolgt werden.

Anzeigen der Konfiguration der Objektverweisablaufverfolgung

Sie können die Objektverweisablaufverfolgungskonfiguration anzeigen, die derzeit wirksam ist oder in der Registrierung gespeichert ist, die beim Neustart des Computers verwendet werden soll.

In diesem Beispiel ist eine Objektverweisablaufverfolgungskonfiguration in der Registrierung gespeichert und eine andere Konfiguration, die für die Laufzeit konfiguriert ist. Die Laufzeitablaufverfolgung beginnt sofort (und überschreibt alle Registrierungseinstellungen). Wenn Sie das System jedoch neu starten, gehen die Laufzeiteinstellungen verloren, und die Registrierungseinstellungen für die Objektverweisablaufverfolgung werden wirksam.

Der folgende Befehl zeigt die Konfiguration der Laufzeitobjektverweisablaufverfolgung an. Es verwendet den Parameter /ko ohne andere Parameter.

gflags /ko
Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Wenn objektverweisablaufverfolgung wie in diesem Beispiel aktiviert ist, beschreiben die angezeigten Einstellungen eine ablaufverfolgung, die gerade ausgeführt wird.

Mit dem folgenden Befehl werden die Konfigurationsdaten der Objektverweisablaufverfolgung angezeigt, die in der Registrierung gespeichert sind. Der Parameter /ro wird ohne andere Parameter verwendet.

gflags /ro

Als Antwort zeigt Gflags die in der Registrierung gespeicherten Daten an:

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Wenn Sie den Computer neu gestartet haben, seit Sie der Registrierung die Konfiguration Objektverweisablaufverfolgung hinzugefügt haben, beschreiben die Einstellungen, die als Antwort auf einen befehl gflags /ro angezeigt werden, die ablaufverfolgung, die gerade ausgeführt wird. Wenn Sie jedoch noch nicht neu gestartet oder neu gestartet haben, aber dann eine Laufzeitobjektverweisverfolgung (/ko) gestartet haben, sind die einstellungen, die in der Registrierung gespeichert sind, derzeit nicht wirksam, aber sie werden wieder wirksam, wenn Sie das System neu starten.

Deaktivieren der Objektverweisablaufverfolgung

Wenn Sie Laufzeit (Kernelflag) Objektverweisablaufverfolgungseinstellungen deaktivieren, wird die Ablaufverfolgung sofort beendet. Wenn Sie objektverweisablaufverfolgungseinstellungen in der Registrierung deaktivieren, wird die Ablaufverfolgung beendet, wenn Sie den Computer neu starten.

Mit dem folgenden Befehl wird die Laufzeitablaufverfolgung für Objektverweis deaktiviert. Er verwendet den Parameter /d , um alle Einstellungen zu deaktivieren. Sie können Einstellungen nicht selektiv deaktivieren.

gflags /ko -d

Wenn der Befehl erfolgreich ist, antwortet Gflags mit der folgenden Meldung:

Running Kernel Settings :
Object Ref Tracing Disabled

Mit dem folgenden Befehl wird die Laufzeitablaufverfolgung für Objektverweis deaktiviert.

Mit dem folgenden Befehl werden die Einstellungen für die Objektverweisablaufverfolgung in der Registrierung deaktiviert. Er verwendet den Parameter /d , um alle Einstellungen zu deaktivieren. Sie können Einstellungen nicht selektiv deaktivieren. Dieser Befehl ist wirksam, wenn Sie den Computer neu starten.

gflags /ro -d

Wenn der Befehl erfolgreich ist, antwortet Gflags mit der folgenden Meldung:

Boot Registry Settings :
Object Ref Tracing Disabled