ProcDump v11.0

Par Mark Russinovich et Andrew Richards

Date de publication : 03/11/2022

TéléchargerTélécharger ProcDump(714 Ko)

Télécharger ProcDump pour Linux (GitHub)

Créé avec ZoomIt

Introduction

ProcDump est un utilitaire en ligne de commande dont l’objectif principal est de surveiller les pics d’UC d’une application et de générer des vidages sur incident pendant un pic qu’un administrateur ou un développeur peut utiliser pour déterminer la cause du pic. ProcDump inclut également la surveillance des fenêtres suspendues (en utilisant la même définition de blocage de fenêtre que Windows et le Gestionnaire des tâches), la surveillance des exceptions non gérée et peut générer des vidages en fonction des valeurs des compteurs de performances système. Il peut également servir d’utilitaire de vidage de processus général que vous pouvez incorporer dans d’autres scripts.

Utilisation de ProcDump

Capturer l’utilisation :

procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

Utilisation de l’installation :

procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

Utilisation de la désinstallation :

procdump.exe -u

Types de vidage :

Type de vidage Description
-Mm Écrivez un fichier de vidage « Mini ». (par défaut)
- Inclut la mémoire référencée directement et indirectement (piles et ce qu’elles référencent).
- Inclut toutes les métadonnées (Processus, Thread, Module, Handle, Espace d’adressage, etc.).
-ma Écrivez un fichier de vidage « complet ».
- Inclut toute la mémoire (Image, Mappée et Privée).
- Inclut toutes les métadonnées (Processus, Thread, Module, Handle, Espace d’adressage, etc.).
-Mt Écrire un fichier de vidage « Triage ».
- Inclut la mémoire directement référencée (piles).
- Inclut des métadonnées limitées (Processus, Thread, Module et Handle).
- La suppression des informations sensibles est tentée, mais elle n’est pas garantie.
-mp Écrivez un fichier de vidage « MiniPlus ».
- Inclut toute la mémoire privée et toute l’image en lecture/écriture ou la mémoire mappée.
- Inclut toutes les métadonnées (Processus, Thread, Module, Handle, Espace d’adressage, etc.).
- Pour réduire la taille, la plus grande zone de mémoire privée supérieure à 512 Mo est exclue.
  Une zone de mémoire est définie comme la somme des allocations de mémoire de même taille.
  Le vidage est aussi détaillé qu’un vidage complet, mais sa taille est comprise entre 10 % et 75 %.
- Remarque : les processus CLR sont vidés comme étant complets (-ma) en raison des limitations de débogage.
-Mc Écrivez un fichier de vidage « Personnalisé ».
- Inclut la mémoire et les métadonnées définies par le masque spécifié MINIDUMP_TYPE (Hex).
-Md Écrivez un fichier de vidage « Callback ».
- Inclut la mémoire définie par la MiniDumpWriteDump routine de rappel nommée MiniDumpCallbackRoutine de la DLL spécifiée.
- Inclut toutes les métadonnées (Processus, Thread, Module, Handle, Espace d’adressage, etc.).
-Mk Écrivez également un fichier de vidage « Noyau ».
- Inclut les piles de noyau des threads dans le processus.
- Le système d’exploitation ne prend pas en charge un vidage du noyau (-mk) lors de l’utilisation d’un clone (-r).
- Lors de l’utilisation de plusieurs tailles de vidage, un vidage du noyau est pris pour chaque taille de vidage.

Conditions:

Condition Description
-a Évitez les pannes. Exige -r. Si le déclencheur entraîne l’interruption prolongée de la cible en raison d’une limite de vidage simultanée dépassée, le déclencheur est ignoré.
Évitez les pannes au moment du délai d’expiration. Annulez la collecte du déclencheur à N quelques secondes.
-b Traitez les points d’arrêt de débogage comme des exceptions (sinon, ignorez-les).
-c Seuil du processeur au-dessus duquel créer un vidage du processus.
-Cl Seuil du processeur sous lequel créer un vidage du processus.
-Dc Ajoutez la chaîne spécifiée au commentaire de vidage généré.
-e Écrivez un vidage lorsque le processus rencontre une exception non gérée.
Incluez le pour créer un 1 vidage sur les exceptions de première chance.
Ajoutez -ld pour créer un vidage lorsqu’une DLL (module) est chargée (le filtrage s’applique).
Ajoutez -ud pour créer un vidage lorsqu’une DLL (module) est déchargée (le filtrage s’applique).
Ajouter -ct pour créer un vidage lors de la création d’un thread.
Ajoutez -et pour créer un vidage lorsqu’un thread se ferme.
-f Filtrez (include) sur le contenu des exceptions, déboguez la journalisation et le nom de fichier au chargement/déchargement de DLL. Les caractères génériques (*) sont pris en charge.
-Fx Filtrez (exclure) sur le contenu des exceptions, la journalisation du débogage et le nom de fichier au chargement/déchargement de DLL. Les caractères génériques (*) sont pris en charge.
-g Exécuter en tant que débogueur natif dans un processus managé (pas d’interopérabilité).
-h Vidage en écriture si le processus a une fenêtre bloquée (ne répond pas aux messages de fenêtre pendant au moins 5 secondes).
-k Arrêtez le processus après le clonage (-r) ou à la fin de la collecte de vidage.
-l Affiche la journalisation du débogage du processus.
-m Seuil de validation de la mémoire en Mo au niveau duquel créer un vidage.
-Ml Déclencher lorsque la validation de la mémoire tombe en dessous de la valeur mo spécifiée.
-n Nombre de vidages à écrire avant de quitter.
-o Remplacer un fichier de vidage existant.
-p Se déclencher lorsque le compteur de performances se trouve à ou dépasse le seuil spécifié. Certains compteurs et/ou noms d’instance peuvent respecter la casse.
-Pl Déclencher lorsque le compteur de performances se situe en dessous du seuil spécifié.
-r Vidage à l’aide d’un clone. La limite simultanée est facultative (1 par défaut, max. 5). Le système d’exploitation ne prend pas en charge un vidage du noyau (-mk) lors de l’utilisation d’un clone (-r). ATTENTION : une valeur d’accès concurrentiel élevée peut avoir un impact sur les performances du système.
- Windows 7 : utilise la réflexion. Le système d’exploitation ne prend pas en charge -e.
- Windows 8.0 : utilise la réflexion. Le système d’exploitation ne prend pas en charge -e.
- Windows 8.1+ : utilise PSS. Tous les types de déclencheurs sont pris en charge.
-s Secondes consécutives avant l’écriture du vidage (la valeur par défaut est 10).
-t Écrire un vidage à l’arrêt du processus.
-u Traitez l’utilisation du processeur par rapport à un seul cœur (utilisé avec -c).
-v DÉBOGUER UNIQUEMENT : Sortie détaillée.
-w Attendez que le processus spécifié soit lancé s’il n’est pas en cours d’exécution.
-Wer Vidage (le plus grand) en file d’attente vers Rapport d'erreurs Windows.
-x Lancez l’image spécifiée avec des arguments facultatifs. S’il s’agit d’une application store ou d’un package, ProcDump démarre à la prochaine activation (uniquement).
-y CACHÉS: Stocker l’activation de l’application.
-64 Par défaut, ProcDump capture un vidage 32 bits d’un processus 32 bits lors de l’exécution sur Windows 64 bits. Cette option remplace pour créer un vidage 64 bits. Utilisez uniquement pour le débogage du sous-système WOW64.

Contrat de licence :

Utilisez l’option -accepteula de ligne de commande pour accepter automatiquement le contrat de licence Sysinternals.

Arrêt automatisé :

-cancel <Target Process PID>

L’utilisation de cette option ou la définition d’un événement portant le nom ProcDump-<PID> revient à taper Ctrl+C pour terminer ProcDump de manière appropriée. L’arrêt normal garantit la reprise du processus si une capture est active. L’annulation s’applique à TOUTES les instances ProcDump qui surveillent le processus.

Fichier:

Nom de fichier de vidage par défaut : PROCESSNAME_YYMMDD_HHMMSS.dmp

Les substitutions suivantes sont prises en charge :

Substitution Explication
PROCESSNAME Nom du processus
PID ID du processus
EXCEPTIONCODE Code d'exception
AAAAMMJJ Année/Mois/Jour
HHMMSS Heure/minute/seconde

Exemples

  • Écrivez un mini-vidage d’un processus nommé « Bloc-notes » (une seule correspondance peut exister) :

    C:\>procdump notepad
    
  • Écrire un vidage complet d’un processus avec le PID « 4572 » :

    C:\>procdump -ma 4572
    
  • Écrivez d’abord une mini, puis un vidage complet d’un processus avec PID « 4572 » :

    C:\>procdump -mm -ma 4572
    
  • Écrivez 3 vidages à 5 secondes d’un processus nommé « Bloc-notes » :

    C:\>procdump -n 3 -s 5 notepad
    
  • Écrivez jusqu’à 3 mini-vidages d’un processus nommé « consommer » lorsqu’il dépasse 20 % d’utilisation du processeur pendant cinq secondes :

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Écrivez un mini-vidage pour un processus nommé « hang.exe » quand l’une de ses fenêtres ne répond pas pendant plus de 5 secondes :

    C:\>procdump -h hang.exe
    
  • Écrivez un vidage complet et noyau pour un processus nommé « hang.exe » quand l’une de ses fenêtres ne répond pas pendant plus de 5 secondes :

    C:\>procdump -ma -mk -h hang.exe
    
  • Écrivez un mini-vidage d’un processus nommé « outlook » lorsque l’utilisation totale du processeur système dépasse 20 % pendant 10 secondes :

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Écrivez un vidage complet d’un processus nommé « outlook » lorsque le nombre de handles d’Outlook dépasse 10 000 :

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Écrivez un vidage complet du PID 1234 « svchost », instance 87, lorsque le nombre de handles dépasse 10 000 :

    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    Remarque : Compteurs d’instances multiples
    S’il existe plusieurs instances du compteur, vous devez inclure le nom et/ou le numéro d’instance.

    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    Les systèmes d’exploitation plus anciens nécessitent que vous ajoutiez le PID pour \Process les compteurs.

    \Process(<name>[_PID])\<counter>
    

    Pointe: Utilisez Analyseur de performances pour afficher les compteurs (respect de la casse, par exemple).
    Pointe: Pour \Process(*) les compteurs basés, utilisez PowerShell pour mapper un PID à son #NNN.

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • Écrivez un vidage complet pour une exception de 2e chance :

    C:\>procdump -ma -e w3wp.exe
    
  • Écrivez un vidage complet pour une exception de 1ère ou de 2e chance :

    C:\>procdump -ma -e 1 w3wp.exe
    
  • Écrivez un vidage complet pour un message de chaîne de débogage :

    C:\>procdump -ma -l w3wp.exe
    
  • Écrivez jusqu’à 10 vidages complets de chaque 1ère ou 2e exception de w3wp.exe :

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Écrivez jusqu’à 10 vidages complets si le code/nom/msg d’une exception contient « »NotFound :

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • Écrivez jusqu’à 10 vidages complets si un message de chaîne de débogage contient « »NotFound :

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • Attendez un processus appelé « Bloc-notes » (et surveillez-le à la recherche d’exceptions) :

    C:\>procdump -e -w notepad
    
  • Lancez un processus appelé « Bloc-notes » (et surveillez-le à la recherche d’exceptions) :

    C:\>procdump -e -x c:\dumps notepad
    
  • Inscrivez-vous pour lancer et tenter d’activer une « application » du magasin. Une nouvelle instance ProcDump démarre lorsqu’elle est activée :

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Inscrivez-vous au lancement d’un « package » de magasin. Une nouvelle instance ProcDump démarre lorsqu’elle est activée (manuellement) :

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • Écrivez un vidage MiniPlus de la banque d’informations exchange Microsoft lorsqu’elle a une exception non gérée :

    C:\>procdump -mp -e store.exe
    
  • Affichez sans écrire de vidage, les codes/noms d’exception de w3wp.exe :

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0 ; Utilisez Reflection pour réduire les pannes pour 5 déclencheurs consécutifs :

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Utilisez PSS pour réduire les pannes pour 5 déclencheurs simultanés :

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • Installez ProcDump en tant que débogueur post-mortem (AeDebug) :

    C:\>procdump -ma -i c:\dumps
    

    .. Ou..

    C:\Dumps>procdump -ma -i
    
  • Désinstallez ProcDump en tant que débogueur post-mortem (AeDebug) :

    C:\>procdump -u
    

Consultez la liste des exemples de lignes de commande (les exemples sont répertoriés ci-dessus) :

C:\>procdump -? -e
  • Windows Internals Book Les mises à jour officielles et la page errata pour le livre définitif sur les internes de Windows, par Mark Russinovich et David Solomon.
  • Référence de l’administrateur Windows Sysinternals Le guide officiel des utilitaires Sysinternals par Mark Russinovich et Aaron Margosis, y compris des descriptions de tous les outils, de leurs fonctionnalités, de la façon de les utiliser pour la résolution des problèmes et des exemples de cas réels de leur utilisation.

TéléchargerTélécharger ProcDump(714 Ko)

Télécharger ProcDump pour Linux (GitHub)

S’exécute sur :

  • Client : Windows 8.1 et versions ultérieures.
  • Serveur : Windows Server 2012 et versions ultérieures.

En savoir plus