Partager via


DTrace Live Dump

DTrace fournit une fonctionnalité permettant de capturer le vidage en direct à partir du script D à l’aide de lkd(). Les fichiers de vidage de mémoire sont utilisés pour le débogage de problèmes complexes dans Windows à l’aide du débogueur Windows. Pour plus d’informations, consultez Analyser les fichiers de vidage sur incident à l’aide de WinDbg. Pour télécharger le débogueur, consultez Télécharger et installer le débogueur Windows WinDbg.

Le vidage en direct DTrace permet de déclencher le vidage au point exact où l’erreur s’est produite. Par instance, l’erreur peut être une fonction qui retourne une erreur. Vous pouvez utiliser DTrace pour se connecter à ce retour de fonction et déclencher un vidage dynamique lorsque la valeur de retour est « error ».

Notes

DTrace est pris en charge dans les builds Insider de Windows après la version 18980 et Windows Server Build 18975.

Pour plus d’informations générales sur l’utilisation de DTrace sur Windows, consultez DTrace.

Utilisation de DTrace Live Dump

Utilisation : lkd (paramètre) ;

Les options suivantes peuvent être définies pour modifier les informations incluses dans le mini dump en direct.

0x0 - Vidage complet du noyau (valeur par défaut)

0x1 - Pages utilisateur + Pages du noyau (fonctionne uniquement avec l’attachement KD)

0x2 - Minidump

0x4 - Pages Hyper-V + Pages noyau)

0x5 : pages utilisateur, noyau et hyperviseur.

Exemple de code live dump

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

Enregistrez le fichier en tant que livedumpstatuscheck.d.

Ouvrez une invite de commandes en tant qu’administrateur et exécutez le script à l’aide de l’option -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

Le fichier de vidage créé se trouve généralement dans C:\Windows\LiveKernelReports.

Si l’emplacement du fichier de vidage a été modifié, la valeur est stockée dans cette clé de Registre : hklm\system\currentcontrolset\control\crashcontrol\livekernelreports

Utilisez WinDbg pour utiliser un fichier de vidage comme décrit ci-dessus.

Résolution des problèmes

Ouvrez le observateur d'événements Windows : Accédez à : Journaux des applications et des services-Microsoft-Windows-Kernel-Livedump-Operational>>>>

Si vous n’avez trouvé aucun journal, activez le canal analytique à partir de l’invite de commandes ou de l’observateur d’événements comme décrit ci-dessous.

Activer le canal analytique à partir de l’invite de commandes

Utilisez cette commande pour activer le canal analytique à partir de et l’invite de commandes administrateur.

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

Activer le canal analytique à l’aide de observateur d'événements

  1. Démarrer Windows observateur d'événements

  2. Cliquez sur Afficher et case activée « Afficher les journaux analytiques et de débogage ». Cela affiche le canal analytique pour livedump.

  3. Cliquez avec le bouton droit sur et activez Microsoft-Windows-Kernel-LiveDump/Analytic.

Activation de vidages dynamiques complets

Ces exemples de paramètres ci-dessous montrent que le nombre maximal de vidages en direct complets qui peuvent se trouver sur le disque à un moment donné sur 10 et stocke les vidages de mémoire complets, pas seulement un mini-vidage.

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

Pour plus d’informations sur ces paramètres, consultez Paramètres WER.

Désactiver la limitation

La limitation est une fonctionnalité qui empêche les vidages et le système de journalisation d’avoir un impact sur l’utilisation normale de Windows. Cette fonctionnalité peut interférer avec la création de vidages dynamiques dans certains environnements à ressources limitées.

Vérifiez les paramètres de limitation du vidage en direct et, si nécessaire, réessayez en désactivant la limitation en définissant les clés SystemThrottleThreshold et ComponentThrottleThreshold sur zéro, comme illustré ici.

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

Problèmes d’espace disque (ID d’événement 202 - Texte d’erreur : L’API de données de vidage différée d’écriture de vidage en direct a pris fin. État NT : 0xC000007F.)

Cela signifie que l’espace disque est insuffisant. Mettez à jour la clé de Registre indiquée ci-dessous pour modifier le chemin d’accès pour la création de vidage dynamique, dans cet exemple, en un lecteur d : qui dispose d’un espace de stockage supplémentaire disponible.

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

Cette commande définit le chemin racine du vidage dynamique sur d:\livedumps (par exemple).

Ne créez pas manuellement le dossier, car il est géré par le système d’exploitation et sera créé lorsque le vidage est déclenché avec les autorisations appropriées.

Voir aussi

DTrace sur Windows

Programmation Windows DTrace

Exemples de code Windows DTrace