Condividi tramite


Live Dump di Dtrace

DTrace offre una funzionalità per acquisire il 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 ulteriori informazioni, vedere Analizzare i file di dump di crash tramite WinDbg. Per scaricare il debugger, vedere Scaricare e installare il debugger Windows WinDbg.

DTrace live dump 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 utilizzare DTrace per agganciarsi al ritorno di questa funzione e attivare un live dump quando il valore restituito è "error".

Annotazioni

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 DTrace Live Dump

Utilizzo: lkd (parametro);

È possibile impostare le opzioni seguenti per modificare le informazioni incluse nel mini dump live.

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 più 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 la finestra del 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 di dump è stato modificato, il valore viene archiviato in questa chiave del Registro di sistema: hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

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

Risoluzione dei problemi

Aprire il Visualizzatore eventi di Windows: Passare a: Registri applicazioni e servizi-Microsoft-Windows-Kernel-Livedump-Operational>>>>

Se non sono stati trovati 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 dell'amministratore.

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

Abilitare il canale analitico tramite Visualizzatore eventi

  1. Avviare Il Visualizzatore eventi di Windows

  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 live completi

Le seguenti impostazioni di esempio mostrano come impostare su 10 il numero massimo di dump completi in tempo reale che possono trovarsi su disco in qualsiasi momento e memorizza i dump completi della memoria, 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 Impostazioni wer.

Disabilitare il throttling

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

Controllare le impostazioni di limitazione del dump live e, se necessario, riprovare disabilitando la limitazione impostando le chiavi SystemThrottleThreshold e ComponentThrottleThreshold su zero, come mostrato 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 Testo: API live dump deferred dump data 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