Condividi tramite


DTrace Live Dump

DTrace offre una funzionalità per acquisire dump in tempo reale dall'interno dello script D usando lkd(). I file di dump della memoria vengono usati per il debug di problemi complessi in Windows tramite il debugger di Windows. Per altre informazioni, vedere Analizzare i file di dump di arresto anomalo del sistema tramite WinDbg. Per scaricare il debugger, vedere Scaricare e installare il debugger Windows WinDbg.

Il dump live di DTrace consente di attivare il dump nel punto esatto in cui si è verificato l'errore. Ad esempio, l'errore potrebbe essere una funzione che restituisce un errore. È possibile usare DTrace per associare questa funzione e attivare un dump attivo quando il valore restituito è "error".

Nota

DTrace è supportato nelle build Insider di Windows dopo la versione 18980 e Windows Server Build 18975.

Per informazioni generali sull'uso di DTrace in Windows, vedere DTrace.

Utilizzo del dump live di DTrace

Utilizzo: lkd (parametro);

Le opzioni seguenti possono essere impostate per modificare le informazioni incluse nel dump live mini.

0x0 - Dump completo del kernel (valore predefinito)

0x1 - Pagine utente e pagine kernel (funziona solo con il collegamento KD)

0x2 - Minidump

0x4 - Pagine Hyper-V e pagine kernel)

0x5: pagine utente, kernel e hypervisor.

Codice di esempio di dump live

#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);
	}
}

Salvare il file come livedumpstatuscheck.d.

Aprire un prompt dei comandi come amministratore ed eseguire lo script usando l'opzione -s.

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

Il file di dump creato si trova in genere in C:\Windows\LiveKernelReports.

Se il percorso del file dump è stato modificato, il valore viene archiviato in questa chiave del Registro di sistema: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Usare WinDbg per usare un file di dump come descritto in precedenza.

Risoluzione dei problemi

Aprire windows Visualizzatore eventi: Vai a: Registri applicazioni e servizi-Microsoft-Windows-Kernel-Livedump-Operational>>>>

Se non sono stati trovato log, abilitare il canale analitico dal prompt dei comandi o dal visualizzatore eventi, come descritto di seguito.

Abilitare il canale analitico dal prompt dei comandi

Usare questo comando per abilitare il canale analitico dal prompt dei comandi e amministratore.

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

Abilitare il canale analitico usando Visualizzatore eventi

  1. Avviare Windows Visualizzatore eventi

  2. Fare clic su Visualizza e selezionare "Mostra log analitici e di debug". Verrà visualizzato il canale analitico per livedump.

  3. Fare clic con il pulsante destro del mouse su e abilitare Microsoft-Windows-Kernel-LiveDump/Analytics.

Abilitazione di dump in tempo reale completi

Queste impostazioni di esempio riportate di seguito mostrano l'impostazione del numero massimo di dump in tempo reale completi che possono trovarsi su disco in qualsiasi momento su 10 e archivia i dump di memoria completi, non solo un mini dump.

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

Per altre informazioni su queste impostazioni, vedere WeR Settings.For more information on these settings, see WER Settings.

Disabilitare la limitazione

La limitazione è una funzionalità che impedisce ai dump e al sistema di registrazione di influire sull'uso normale di Windows. Questa funzionalità può interferire con la creazione di dump in tempo reale in determinati ambienti vincolati alle risorse.

Controllare le impostazioni della limitazione dei dump in tempo reale e, se necessario, riprovare disabilitando la limitazione impostando SystemThrottleThreshold e ComponentThrottleThreshold chiavi su zero, come illustrato qui.

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

Problemi di spazio su disco (ID evento 202 -Error Text: Live Dump Write Deferred Dump Data API terminata. Stato NT: 0xC000007F.)

Ciò significa che lo spazio su disco non è sufficiente. Aggiornare la chiave del Registro di sistema illustrata di seguito per modificare il percorso per la creazione di dump in tempo reale, in questo esempio in un'unità d: con spazio di archiviazione aggiuntivo disponibile.

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

Questo comando imposta il percorso radice del dump attivo su d:\livedumps (ad esempio).

Non creare manualmente la cartella perché è gestita dal sistema operativo e verrà creata quando il dump viene attivato con le autorizzazioni appropriate.

Vedere anche

DTrace in Windows

Programmazione DTrace di Windows

Esempi di codice di Windows DTrace