Partager via


ProcDump v11.0

Par Mark Russinovich et Andrew Richards

Publication : 03/11/2022

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

Télécharger ProcDump pour Linux (GitHub)
Télécharger ProcDump pour Mac (GitHub)

Créé avec ZoomIt

Introduction

ProcDump est un utilitaire en ligne de commande dont l’objectif principal est de surveiller une application pour les pics d’UC et de générer des vidages d’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 d’un blocage de fenêtre que Windows et le Gestionnaire des tâches), une surveillance des exceptions non prise en charge 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

Capturez 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, ...]}
            }

Installer l’utilisation :

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

Désinstaller l’utilisation :

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é et Privé).
- Inclut toutes les métadonnées (Processus, Thread, Module, Handle, Espace d’adressage, etc.).
-mt Écrivez 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 en tant que full (-ma) en raison de 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 (hexadécimal).
-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).
- Lorsque vous utilisez plusieurs tailles de vidage, un vidage du noyau est effectué pour chaque taille de vidage.

Conditions :

Condition Description
-a Évitez les pannes. Exige -r. Si le déclencheur entraîne l’interruption de la cible pendant une période prolongée en raison d’une limite de vidage simultanée dépassée, le déclencheur est ignoré.
-at Évitez les pannes au moment de l’expiration. Annulez la collection du déclencheur en N secondes.
-b Traitez les points d’arrêt de débogage comme des exceptions (sinon, ignorez-les).
-c Seuil processeur au-dessus duquel créer un vidage du processus.
-cl Seuil d’UC en dessous duquel 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 prise en charge.
Incluez le 1 pour créer un 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).
Ajoutez -ct pour créer un vidage lors de la création d’un thread.
Ajoutez -et pour créer un vidage à la sortie d’un thread.
-f Filtrez (include) sur le contenu des exceptions, la journalisation du débogage et le nom du 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 du 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 Affichez la journalisation du débogage du processus.
-m Seuil de validation de la mémoire en Mo auquel créer un vidage.
-ml Déclencheur lorsque la validation de la mémoire passe en dessous de la valeur de Mo spécifiée.
-n Nombre de vidages à écrire avant de quitter.
-o Remplacez 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 de ligne de commande -accepteula 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.

Nom de 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
AAMMJJ 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 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 anciens systèmes d’exploitation nécessitent que vous ajoutiez le PID pour les compteurs \Process.

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

    Conseil : Utilisez Analyseur de performances pour afficher les compteurs (respect de la casse, par exemple).
    Conseil : Pour les compteurs basés sur \Process(*), 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 Microsoft Exchange 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
  • Livre sur les composants internes de Windows La page officielle des mises à jour et des errata du livre définitif sur les composants 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 les descriptions de tous les outils, leurs fonctionnalités, comment les utiliser pour le dépannage et des exemples de cas réels de leur utilisation.

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

Télécharger ProcDump pour Linux (GitHub)
Télécharger ProcDump pour Mac (GitHub)

Fonctionne sur :

  • Client : Windows 8.1 et supérieur.
  • Serveur : Windows Server 2012 et supérieur.

En savoir plus