DTrace Live Dump

DTrace bietet eine Möglichkeit zum Erfassen von Liveabbildern innerhalb des D-Skripts mithilfe von lkd(). Speicherabbilddateien werden zum Debuggen komplexer Probleme in Windows mithilfe des Windows-Debuggers verwendet. Weitere Informationen finden Sie unter Analysieren von Absturzabbilddateien mithilfe von WinDbg. Informationen zum Herunterladen des Debuggers finden Sie unter Herunterladen und Installieren des Windows-Debuggers für WinDbg.

DTrace-Liveabbild bietet die Möglichkeit, das Speicherabbild genau an dem Punkt auszulösen, an dem der Fehler aufgetreten ist. Bei instance kann der Fehler eine Funktion sein, die einen Fehler zurückgibt. Sie können DTrace verwenden, um diese Funktionsrückgabe einzuhaken und ein Liveabbild auszulösen, wenn der Rückgabewert "error" lautet.

Hinweis

DTrace wird in den Insider-Builds von Windows nach Version 18980 und Windows Server Build 18975 unterstützt.

Allgemeine Informationen zum Arbeiten mit DTrace unter Windows finden Sie unter DTrace.

Verwendung von DTrace-Liveabbildern

Verwendung: lkd (Parameter);

Die folgenden Optionen können festgelegt werden, um zu ändern, welche Informationen im Live-Miniabbild enthalten sind.

0x0 : Vollständiges Kernelabbild (Standardwert)

0x1 : Benutzerseiten + Kernelseiten (funktioniert nur mit KD attach)

0x2 – Minidump

0x4 – Hyper-V-Seiten + Kernelseiten)

0x5: Benutzer-, Kernel- und Hypervisorseiten.

Beispielcode für Liveabbild

#pragma D option destructive

inline uint32_t STATUS_UNSUCCESSFUL = 0xc0000001UL;

syscall:::return
{ 
	this->status = (uint32_t)arg0;

	if (this->status == STATUS_UNSUCCESSFUL)
	{ 
		printf ("Return value arg0:%x \n", this->status);
		printf ("Triggering LiveDump \n");
		lkd(0);
		exit(0);
	}
}

Speichern Sie die Datei als "livedumpstatuscheck.d".

Öffnen Sie eine Eingabeaufforderung als Administrator, und führen Sie das Skript mit der Option -s aus.

C:\Windows\System32>dtrace -s livedumpstatuscheck.d
dtrace: script 'livedumpstatuscheck.d' matched 1881 probes
dtrace: allowing destructive actions
CPU     ID                    FUNCTION:NAME
  0     93 NtAlpcSendWaitReceivePort:return Return value arg0:c0000001
Triggering LiveDump

Die erstellte Speicherabbilddatei befindet sich in der Regel in C:\Windows\LiveKernelReports.

Wenn der Speicherort der Speicherabbilddatei geändert wurde, wird der Wert in diesem Registrierungsschlüssel gespeichert: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Verwenden Sie WinDbg, um mit einer Speicherabbilddatei zu arbeiten, wie oben beschrieben.

Problembehandlung

Öffnen Sie die Windows-Ereignisanzeige: Wechseln Sie zu Anwendungs- und Dienstprotokolle-Microsoft-Windows-Kernel-Livedump-Operational>>>>.

Wenn Sie keine Protokolle gefunden haben, aktivieren Sie den Analysekanal über die Eingabeaufforderung oder die Ereignisanzeige, wie unten beschrieben.

Aktivieren des Analysekanals über die Eingabeaufforderung

Verwenden Sie diesen Befehl, um den Analysekanal über und die Administratoreingabeaufforderung zu aktivieren.

wevtutil sl Microsoft-Windows-Kernel-LiveDump/Analytic /e:true

Aktivieren des Analysekanals mithilfe von Ereignisanzeige

  1. Windows Ereignisanzeige starten

  2. Klicken Sie auf Anzeigen, und aktivieren Sie "Analyse- und Debugprotokolle anzeigen". Dadurch wird der Analysekanal für "livedump" angezeigt.

  3. Klicken Sie mit der rechten Maustaste auf, und aktivieren Sie Microsoft-Windows-Kernel-LiveDump/Analytic.

Aktivieren vollständiger Liveabbilder

Diese Beispieleinstellungen unten zeigen, dass die maximale Anzahl von vollständigen Liveabbildern, die sich zu einem bestimmten Zeitpunkt auf dem Datenträger befinden können, auf 10 festgelegt wird, und speichert die vollständigen Speicherabbilder, nicht nur ein Miniabbild.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v FullLiveReportsMax /d 10

reg add "HKLM\System\CurrentControlSet\Control\CrashControl" /f /t REG_DWORD /v AlwaysKeepMemoryDump /d 1

Weitere Informationen zu diesen Einstellungen finden Sie unter WER-Einstellungen.

Deaktivieren der Drosselung

Die Drosselung ist ein Feature, das verhindert, dass sich die Dumps und das Protokollierungssystem auf die normale Verwendung von Windows auswirken. Dieses Feature kann die Erstellung von Liveabbildern in bestimmten Ressourcen eingeschränkten Umgebungen beeinträchtigen.

Überprüfen Sie die Einstellungen für live dump Drosselung, und versuchen Sie es ggf. erneut, indem Sie die Drosselung deaktivieren, indem Sie die Schlüssel SystemThrottleThreshold und ComponentThrottleThreshold wie hier gezeigt auf Null festlegen.

reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v SystemThrottleThreshold /d 0
reg add "HKLM\System\CurrentControlSet\Control\CrashControl\FullLiveKernelReports" /f /t REG_DWORD /v ComponentThrottleThreshold /d 0

Probleme mit dem Speicherplatz (Ereignis-ID 202 – Fehlertext: Api für verzögerte Speicherabbilder wurde beendet. NT-Status: 0xC000007F.)

Dies bedeutet, dass der Speicherplatz auf dem Datenträger nicht ausreicht. Aktualisieren Sie den unten gezeigten Registrierungsschlüssel, um den Pfad für die Erstellung des Liveabbilds in laufwerk d: zu ändern, das zusätzlichen Speicherplatz zur Verfügung hat.

reg add hklm\system\currentcontrolset\control\crashcontrol\livekernelreports /v "LiveKernelReportsPath" /t reg_sz /d "\??\d:\livedumps"

Dieser Befehl legt den Stammpfad des Liveabbilds auf fest d:\livedumps (als Beispiel).

Erstellen Sie den Ordner nicht manuell, da er vom Betriebssystem verwaltet wird und erstellt wird, wenn das Speicherabbild mit den richtigen Berechtigungen ausgelöst wird.

Weitere Informationen

DTrace unter Windows

DTrace Windows-Programmierung

DTrace-Windows-Codebeispiele