ProcDump v11.0

Von Mark Russinovich und Andrew Richards

Veröffentlicht: 03.11.2022

DownloadProcDump(714 KB)

Herunterladen von ProcDump für Linux (GitHub)

Erstellt mit ZoomIt

Einführung

ProcDump ist ein Befehlszeilenprogramm, dessen Hauptzweck darin besteht, eine Anwendung auf CPU-Spitzen zu überwachen und Absturzabbilder während einer Spitze zu generieren, die ein Administrator oder Entwickler verwenden kann, um die Ursache der Spitze zu ermitteln. ProcDump umfasst auch die Überwachung von hängenden Fenstern (mit der gleichen Definition eines Fensters, das von Windows und Task-Manager verwendet wird), eine nicht behandelte Ausnahmeüberwachung und kann Dumps basierend auf den Werten der Systemleistungsindikatoren generieren. Es kann auch als allgemeines Prozessabbildhilfsprogramm dienen, das Sie in andere Skripts einbetten können.

Verwenden von ProcDump

Nutzung erfassen:

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

Verwendung installieren:

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

Deinstallieren der Verwendung:

procdump.exe -u

Dumptypen:

Dumptyp BESCHREIBUNG
-Mm Schreiben Sie eine Mini-Dumpdatei. (Standard)
– Enthält direkt und indirekt referenzierten Arbeitsspeicher (Stapel und bezugsbezogene Elemente).
- Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-Ma Schreiben Sie eine "vollständige" Dumpdatei.
– Umfasst den gesamten Arbeitsspeicher (Image, Mapped und Private).
- Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-Mt Schreiben Sie eine "Triage"-Dumpdatei.
– Enthält direkt referenzierten Arbeitsspeicher (Stapel).
– Enthält eingeschränkte Metadaten (Prozess, Thread, Modul und Handle).
– Das Entfernen vertraulicher Informationen wird versucht, aber nicht garantiert.
-Mp Schreiben Sie eine MiniPlus-Dumpdatei.
– Enthält den gesamten privaten Arbeitsspeicher und den gesamten Bild-/Schreibzugriff oder zugeordneten Arbeitsspeicher.
- Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
– Um die Größe zu minimieren, wird der größte private Speicherbereich über 512 MB ausgeschlossen.
  Ein Speicherbereich wird als Die Summe der Speicherbelegungen gleicher Größe definiert.
  Das Dump ist so detailliert wie ein vollständiges Dump, aber 10%-75% der Größe.
Hinweis: CLR-Prozesse werden aufgrund von Debugbeschränkungen als vollständig (-ma) angezeigt.
-Mc Schreiben Sie eine "Benutzerdefinierte" Dumpdatei.
– Enthält den Arbeitsspeicher und die Metadaten, die von der angegebenen MINIDUMP_TYPE Maske (Hex) definiert sind.
-Md Schreiben Sie eine Rückrufabbilddatei.
– Enthält den Arbeitsspeicher, der von der MiniDumpWriteDump Rückrufroutine mit dem Namen MiniDumpCallbackRoutine der angegebenen DLL definiert wird.
- Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-Mk Schreiben Sie auch eine "Kernel"-Dumpdatei.
– Schließt die Kernelstapel der Threads in den Prozess ein.
– Betriebssystem unterstützt kein Kernelabbild (-mk) bei Verwendung eines Klons (-r).
– Bei Verwendung mehrerer Dumpgrößen wird für jede Dumpgröße ein Kernelabbild erstellt.

Bedingungen:

Bedingung Beschreibung
-a Vermeiden Sie einen Ausfall. Erfordert -r. Wenn der Trigger bewirkt, dass das Ziel aufgrund eines überschrittenen gleichzeitigen Dumplimits für längere Zeit angehalten wird, wird der Trigger übersprungen.
-Auf Vermeiden Sie einen Ausfall bei Timeout. Brechen Sie die Auflistung des Triggers in Sekunden ab N .
-b Behandeln Sie Debug-Breakpoints als Ausnahmen (andernfalls ignorieren Sie sie).
-c CPU-Schwellenwert zum Erstellen eines Speicherabbilds des Prozesses.
-Cl CPU-Schwellenwert, unter dem ein Speicherabbild des Prozesses erstellt werden soll.
-Dc Fügen Sie dem generierten Dumpkommentar die angegebene Zeichenfolge hinzu.
-e Schreiben Sie ein Dump, wenn der Prozess auf eine nicht behandelte Ausnahme stößt.
Fügen Sie den 1 ein, um das Dump bei Ausnahmen für die erste Chance zu erstellen.
Fügen Sie hinzu -ld , um ein Dump zu erstellen, wenn eine DLL (Modul) geladen wird (Filterung gilt).
Fügen Sie hinzu -ud , um ein Dump zu erstellen, wenn eine DLL (Modul) entladen wird (Filterung gilt).
Fügen Sie hinzu -ct , um ein Dump zu erstellen, wenn ein Thread erstellt wird.
Fügen Sie hinzu -et , um ein Dump zu erstellen, wenn ein Thread beendet wird.
-f Filtern (einschließen) nach dem Inhalt von Ausnahmen, Debugprotokollierung und Dateinamen beim Laden/Entladen der DLL. Platzhalter (*) werden unterstützt.
-Fx Filtern (ausschließen) nach dem Inhalt von Ausnahmen, Debugprotokollierung und Dateinamen beim Laden/Entladen der DLL. Platzhalter (*) werden unterstützt.
-g Ausführen als nativer Debugger in einem verwalteten Prozess (kein Interop).
-h Schreibabbild, wenn der Prozess über ein hängenes Fenster verfügt (antwortet mindestens 5 Sekunden lang nicht auf Fensternachrichten).
-k Beenden Sie den Prozess nach dem Klonen (-r) oder am Ende der Dumpsammlung.
-l Zeigen Sie die Debugprotokollierung des Prozesses an.
-m Arbeitsspeichercommitwert in MB, bei dem ein Dump erstellt werden soll.
-Ml Trigger, wenn der Arbeitsspeichercommit unter den angegebenen MB-Wert fällt.
-n Anzahl der Dumps, die vor dem Beenden geschrieben werden sollen.
-o Überschreiben Sie eine vorhandene Dumpdatei.
-p Lösen Sie aus, wenn der Leistungsindikator den angegebenen Schwellenwert erreicht oder überschreitet. Bei einigen Leistungsindikatoren und/oder Instanznamen kann die Groß-/Kleinschreibung beachtet werden.
-Pl Lösen Sie aus, wenn der Leistungsindikator unter den angegebenen Schwellenwert fällt.
-r Dumpen mithilfe eines Klons. Das gleichzeitige Limit ist optional (Standard 1, max. 5). Betriebssystem unterstützt kein Kernelabbild (-mk) bei Verwendung eines Klons (-r). ACHTUNG: Ein hoher Parallelitätswert kann sich auf die Systemleistung auswirken.
- Windows 7: Verwendet Reflektion. Betriebssystem unterstützt -enicht .
- Windows 8.0: Verwendet Reflektion. Betriebssystem unterstützt -enicht .
- Windows 8.1+: Verwendet PSS. Alle Triggertypen werden unterstützt.
-s Aufeinanderfolgende Sekunden vor dem Schreiben des Dumps (Standardwert ist 10).
-t Schreiben Sie ein Dump, wenn der Prozess beendet wird.
-u Behandeln sie die CPU-Auslastung relativ zu einem einzelnen Kern (verwendet mit -c).
-v NUR DEBUGGEN: Ausführliche Ausgabe.
-w Warten Sie, bis der angegebene Prozess gestartet wird, wenn er nicht ausgeführt wird.
-wer Stellen Sie das (größte) Dump in eine Warteschlange Windows-Fehlerberichterstattung.
-x Starten Sie das angegebene Image mit optionalen Argumenten. Wenn es sich um eine Store-Anwendung oder ein Paket handelt, startet ProcDump bei der nächsten Aktivierung (nur).
-Y VERSTECKTE: Speicheranwendungsaktivierung.
-64 Standardmäßig erfasst ProcDump bei der Ausführung unter 64-Bit-Windows ein 32-Bit-Dump eines 32-Bit-Prozesses. Diese Option wird außer Kraft gesetzt, um ein 64-Bit-Dump zu erstellen. Verwenden Sie nur für das Debuggen des WOW64-Subsystems.

Lizenzvereinbarung:

Verwenden Sie die Befehlszeilenoption -accepteula , um die Sysinternals-Lizenzvereinbarung automatisch zu akzeptieren.

Automatische Beendigung:

-cancel <Target Process PID>

Die Verwendung dieser Option oder das Festlegen eines Ereignisses mit dem Namen ProcDump-<PID> ist identisch mit der Eingabe von STRG+C, um ProcDump ordnungsgemäß zu beenden. Eine ordnungsgemäße Beendigung stellt sicher, dass der Prozess fortgesetzt wird, wenn eine Erfassung aktiv ist. Der Abbruch gilt für ALLE ProcDump-Instanzen, die den Prozess überwachen.

Dateiname:

Standardabbilddateiname: PROCESSNAME_YYMMDD_HHMMSS.dmp

Die folgenden Ersetzungen werden unterstützt:

Substitution Erklärung
PROCESSNAME Prozessname
PID Prozess-ID
EXCEPTIONCODE Ausnahmecode
JJMMTT Jahr/Monat/Tag
HHMMSS Stunde/Minute/Sekunde

Beispiele

  • Schreiben Sie ein Miniabbild eines Prozesses namens "Editor" (nur eine Übereinstimmung kann vorhanden sein):

    C:\>procdump notepad
    
  • Schreiben Sie ein vollständiges Abbild eines Prozesses mit PID "4572":

    C:\>procdump -ma 4572
    
  • Schreiben Sie zuerst einen Mini und dann ein vollständiges Abbild eines Prozesses mit PID "4572":

    C:\>procdump -mm -ma 4572
    
  • Schreiben Sie 3 Miniabbilder im Abstand von 5 Sekunden von einem Prozess mit dem Namen "Editor":

    C:\>procdump -n 3 -s 5 notepad
    
  • Schreiben Sie bis zu 3 Minidumps eines Prozesses mit dem Namen "verbrauchen", wenn er eine CPU-Auslastung von 20 % für fünf Sekunden überschreitet:

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Schreiben Sie ein Minidump für einen Prozess namens "hang.exe", wenn eines der Fenster länger als 5 Sekunden nicht reagiert:

    C:\>procdump -h hang.exe
    
  • Schreiben Sie ein Vollständiges und Kernelabbild für einen Prozess namens "hang.exe", wenn eines der Fenster länger als 5 Sekunden nicht reagiert:

    C:\>procdump -ma -mk -h hang.exe
    
  • Schreiben Sie ein Miniabbild eines Prozesses mit dem Namen "outlook", wenn die cpu-Auslastung des Systems 20 % für 10 Sekunden überschreitet:

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Schreiben Sie ein vollständiges Abbild eines Prozesses mit dem Namen "outlook", wenn die Handleanzahl von Outlook 10.000 überschreitet:

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Schreiben Sie ein vollständiges Dump von "svchost" PID 1234, Instanz #87, wenn die Handleanzahl 10.000 überschreitet:

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

    Hinweis: Indikatoren für mehrere Instanzen
    Wenn mehrere Instanzen des Indikators vorhanden sind, müssen Sie den Namen und/oder die Instanznummer einschließen.

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

    Bei älteren Betriebssystemen müssen Sie die PID für \Process Leistungsindikatoren anfügen.

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

    Tipp: Verwenden Sie Leistungsmonitor, um die Indikatoren anzuzeigen (insbesondere Groß-/Kleinschreibung).
    Tipp: Verwenden \Process(*) Sie für basierte Leistungsindikatoren PowerShell, um eine PID ihrem #NNNzuzuordnen.

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • Schreiben Sie ein vollständiges Abbild für eine Ausnahme mit der 2. Chance:

    C:\>procdump -ma -e w3wp.exe
    
  • Schreiben Sie ein vollständiges Dump für eine Ausnahme mit der 1. oder 2. Chance:

    C:\>procdump -ma -e 1 w3wp.exe
    
  • Schreiben Sie ein vollständiges Abbild für eine Debugzeichenfolgenmeldung:

    C:\>procdump -ma -l w3wp.exe
    
  • Schreiben Sie bis zu 10 vollständige Abbildbilder für jede Ausnahme der 1. oder 2. Chance von w3wp.exe:

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Schreiben Sie bis zu 10 vollständige Abbildbilder, wenn code/name/msg einer Ausnahme ""NotFound enthält:

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • Schreiben Sie bis zu 10 vollständige Abbildbilder, wenn eine Debugzeichenfolgennachricht ""NotFound enthält:

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • Warten Sie auf einen Prozess namens "Editor" (und überwachen Sie ihn auf Ausnahmen):

    C:\>procdump -e -w notepad
    
  • Starten Sie einen Prozess namens "Editor" (und überwachen Sie ihn auf Ausnahmen):

    C:\>procdump -e -x c:\dumps notepad
    
  • Registrieren Sie sich für den Start, und versuchen Sie, eine Speicheranwendung zu aktivieren. Eine neue ProcDump-Instanz wird gestartet, wenn sie aktiviert wird:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Registrieren Sie sich für den Start eines Speicherpakets. Eine neue ProcDump-Instanz wird gestartet, wenn sie (manuell) aktiviert wird:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • Schreiben Sie ein MiniPlus-Dump des Microsoft Exchange-Informationsspeichers, wenn eine nicht behandelte Ausnahme vorliegt:

    C:\>procdump -mp -e store.exe
    
  • Anzeigen, ohne einen Dump zu schreiben, die Ausnahmecodes/-namen von w3wp.exe:

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; Verwenden Sie Reflektion, um den Ausfall für 5 aufeinanderfolgende Trigger zu reduzieren:

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Verwenden Sie PSS, um den Ausfall für 5 gleichzeitige Trigger zu reduzieren:

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • Installieren Sie ProcDump als Postmortem-Debugger (AeDebug):

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

    .. Oder..

    C:\Dumps>procdump -ma -i
    
  • Deinstallieren Sie ProcDump als postmortem-Debugger (AeDebug):

    C:\>procdump -u
    

Sehen Sie sich eine Liste der Beispielbefehlszeilen an (die Beispiele sind oben aufgeführt):

C:\>procdump -? -e
  • Buch "Windows Internals" Die offizielle Update- und Errata-Seite für das endgültige Buch über Windows-Internaten, von Mark Russinovich und David Solomon.
  • Windows Sysinternals-Administratorreferenz Der offizielle Leitfaden zu den Sysinternals-Dienstprogrammen von Mark Russinovich und Aaron Margosis, einschließlich Beschreibungen aller Tools, ihrer Features, ihrer Verwendung für die Problembehandlung und Beispiele für ihre Verwendung in der Praxis.

DownloadProcDump(714 KB)

Herunterladen von ProcDump für Linux (GitHub)

Wird ausgeführt für:

  • Client: Windows 8.1 und höher.
  • Server: Windows Server 2012 und höher.

Weitere Informationen