Freigeben über


ProcDump v11.0

Von Mark Russinovich und Andrew Richards

Veröffentlicht am 03.11.2022

Download ProcDump herunterladen (714 KB)

ProcDump für Linux herunterladen (GitHub)
ProcDump für Mac herunterladen (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 zur Ermittlung ihrer Ursache verwenden kann. ProcDump umfasst auch die Überwachung von hängenden Fenstern (mit der gleichen Definition für das Hängen eines Fensters, das von Windows und vom Task-Manager verwendet wird) sowie die Überwachung nicht behandelter Ausnahmen. Darüber hinaus kann ProcDump Abbilder basierend auf den Werten von Systemleistungsindikatoren generieren. ProcDump kann auch als allgemeines Hilfsprogramm zum Sichern von Abbildern dienen, das Sie in andere Skripts einbetten können.

Verwenden von ProcDump

Erfassen der Verwendung:

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

Installieren der Verwendung:

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

Abbildtypen:

Abbildtyp Beschreibung
-mm Schreibt eine „Mini“-Abbilddatei. (Standard)
– Enthält direkt und indirekt referenzierten Arbeitsspeicher (Stapel und worauf sie referenzieren).
– Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-ma Schreibt eine „vollständige“ Abbilddatei.
– Umfasst den gesamten Arbeitsspeicher (Image, zugeordnet und privat).
– Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-mt Schreibt eine „Triage“-Abbilddatei.
– Enthält direkt referenzierten Arbeitsspeicher (Stapel).
– Enthält eingeschränkte Metadaten (Prozess, Thread, Modul und Handle).
– Es wird versucht, vertrauliche Informationen zu entfernen, dies kann jedoch nicht garantiert werden.
-mp Schreibt eine „MiniPlus“-Abbilddatei.
– Enthält den gesamten privaten Arbeitsspeicher und das gesamten Lese-/Schreib-Image 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 Abbild ist so detailliert wie ein vollständiges, hat aber nur 10-75 % der Größe.
– Hinweis: CLR-Prozesse werden aufgrund von Debuggingbeschränkungen als vollständig (-ma) angezeigt.
-mc Schreibt eine „benutzerdefinierte“ Abbilddatei.
– Enthält den Arbeitsspeicher und die Metadaten, die durch die angegebene MINIDUMP_TYPE-Maske (Hex) definiert sind.
-md Schreibt eine „Rückruf“-Abbilddatei.
– Enthält den Arbeitsspeicher, der von der Rückrufroutine „MiniDumpWriteDump“ mit dem Namen „MiniDumpCallbackRoutine“ der angegebenen DLL definiert wird.
– Enthält alle Metadaten (Prozess, Thread, Modul, Handle, Adressraum usw.).
-mk Schreibt ebenfalls eine „Kernel“-Abbilddatei.
– Schließt die Kernelstapel der Threads im Prozess ein.
– Das Betriebssystem unterstützt kein Kernelabbild (-mk) bei Verwendung eines Klons (-r).
– Bei Verwendung mehrerer Abbildgrößen wird für jede von ihnen ein Kernelabbild erstellt.

Bedingungen:

Bedingung Beschreibung
-a Vermeiden Sie einen Ausfall. Erfordert -r. Wenn der Trigger bewirkt, dass das Ziel aufgrund eines überschrittenen gleichzeitigen Abbildlimits für längere Zeit angehalten wird, wird der Trigger übersprungen.
-at Ausfall bei Timeout vermeiden. Auflistung des Triggers nach N Sekunden abbrechen.
-b Debug-Haltepunkte als Ausnahmen behandeln (oder andernfalls ignorieren).
-c CPU-Schwellenwert, über dem ein Speicherabbild des Prozesses erstellt wird.
-cl CPU-Schwellenwert, unter dem ein Speicherabbild des Prozesses erstellt wird.
-dc Fügt dem zum Abbild generierten Kommentar die angegebene Zeichenfolge hinzu.
-e Schreibt ein Abbild, wenn der Prozess auf eine nicht behandelte Ausnahme stößt.
Fügt „1“ ein, um ein Abbild bei Ausnahmen (erste Chance) zu erstellen.
Fügt „-ld“ hinzu, um ein Abbild zu erstellen, wenn eine DLL (Modul) geladen wird (Filterung wird angewendet).
Fügt „-ud“ hinzu, um ein Abbild zu erstellen, wenn eine DLL (Modul) entladen wird (Filterung wird angewendet).
Fügt „-ct“ hinzu, um ein Abbild zu erstellen, wenn ein Thread erstellt wird.
Fügt „-et“ hinzu, um ein Abbild 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 Abbild schreiben, wenn der Prozess ein hängendes Fenster hat (d. h. mindestens fünf Sekunden lang nicht auf Fensternachrichten reagiert).
-k Beenden des Prozesses nach dem Klonen (-r) oder am Ende der Abbildsammlung.
-l Anzeigen der Debugprotokollierung des Prozesses.
-m Grenze des Commitwerts des Arbeitsspeichers in MB, bei dem ein Abbild erstellt werden soll.
-ml Trigger, wenn der Arbeitsspeichercommit unter den angegebenen Wert in MB fällt.
-n Anzahl der Abbilder, die vor dem Beenden geschrieben werden sollen.
-o Überschreiben einer vorhandenen Abbilddatei.
-p Trigger, wenn der Leistungsindikator den angegebenen Schwellenwert erreicht oder überschreitet. Bei einigen Leistungsindikatoren und/oder Instanznamen muss möglicherweise die Groß-/Kleinschreibung beachtet werden.
-pl Trigger, wenn der Leistungsindikator den angegebenen Schwellenwert unterschreitet.
-r Sichern eines Abbilds mithilfe eines Klons. Das gleichzeitige Limit ist optional (der Standard ist 1, das Maximum 5). Das Betriebssystem unterstützt kein Kernelabbild (-mk) bei Verwendung eines Klons (-r). ACHTUNG: Ein hoher Parallelitätswert kann sich negativ auf die Systemleistung auswirken.
– Windows 7: verwendet Reflektion. Das Betriebssystem unterstützt -e nicht.
– Windows 8.0: verwendet Reflektion. Das Betriebssystem unterstützt -e nicht.
– Windows 8.1 und höher: verwendet PSS. Alle Triggertypen werden unterstützt.
-s Aufeinanderfolgende Sekunden vor dem Schreiben des Abbilds (der Standardwert lautet 10).
-t Schreiben eines Abbilds, wenn der Prozess beendet wird.
-u Behandeln der CPU-Auslastung relativ zu einem einzelnen Kern (wird mit -c verwendet).
-v NUR DEBUGGEN: Ausführliche Ausgabe.
-w Warten, bis der angegebene Prozess gestartet wird, wenn er nicht ausgeführt wird.
-wer Stellen des (größten) Abbilds in eine Warteschlange für Windows-Fehlerberichterstattung.
-x Starten des angegebene Images mit optionalen Argumenten. Wenn es sich um eine Store-Anwendung oder ein -Paket handelt, startet ProcDump (nur) bei der nächsten Aktivierung.
-y VERSTECKT: Aktivierung der Store-Anwendung.
-64 Standardmäßig sichert ProcDump bei der Ausführung unter 64-Bit-Windows ein 32-Bit-Abbild eines 32-Bit-Prozesses. Diese Option wird außer Kraft gesetzt, um ein 64-Bit-Abbild zu sichern. Kann nur für das Debuggen des WOW64-Subsystems verwendet werden.

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:

Standardname der Abbilddatei: 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 Mini-Abbild eines Prozesses namens „notepad“ (es darf nur eine Übereinstimmung vorhanden sein):

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

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

    C:\>procdump -mm -ma 4572
    
  • Schreiben Sie drei Mini-Abbilder im Abstand von fünf Sekunden von einem Prozess mit dem Namen „notepad“:

    C:\>procdump -n 3 -s 5 notepad
    
  • Schreiben Sie bis zu 3 Mini-Abbilder eines Prozesses mit dem Namen „consume“, wenn er eine CPU-Auslastung von 20 % für die Dauer von fünf Sekunden überschreitet:

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Schreiben Sie ein Mini-Abbild für einen Prozess mit dem Namen „hang.exe“, wenn eines seiner Fenster länger als fünf Sekunden nicht reagiert:

    C:\>procdump -h hang.exe
    
  • Schreiben Sie ein vollständiges und ein Kernelabbild für einen Prozess mit dem Namen „hang.exe“, wenn eines seiner Fenster länger als fünf Sekunden nicht reagiert:

    C:\>procdump -ma -mk -h hang.exe
    
  • Schreiben Sie ein Mini-Abbild eines Prozesses mit dem Namen „outlook“, wenn die CPU-Auslastung des Systems zehn Sekunden lang 20 % ü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 Abbild 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“-Indikatoren anfügen.

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

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

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

    C:\>procdump -ma -e w3wp.exe
    
  • Schreiben Sie ein vollständiges Abbild für eine Ausnahme (erste oder zweite 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 zehn vollständige Abbilder für jede Ausnahme von „w3wp.exe“ (erste oder zweite Chance):

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Schreiben Sie bis zu zehn vollständige Abbilder, wenn der Code, der Name oder die Nachricht einer Ausnahme „NotFound“ enthält:

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

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

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

    C:\>procdump -e -x c:\dumps notepad
    
  • Registrieren Sie sich für den Start, und versuchen Sie, eine Store-„Anwendung“ zu aktivieren. Beim Aktivieren wird eine neue ProcDump-Instanz gestartet:

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Registrieren Sie sich für den Start eines Store-„Pakets“. Beim (manuellen) Aktivieren wird eine neue ProcDump-Instanz gestartet:

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

    C:\>procdump -mp -e store.exe
    
  • Zeigen Sie die Ausnahmecodes/-namen von „w3wp.exe“ an, ohne ein Abbild zu schreiben:

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

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1 und höher: Verwenden Sie PSS, um den Ausfall für fünf 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
    

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

C:\>procdump -? -e
  • Buch: Windows Internals: Die offizielle Seite für Updates und Fehler für das umfassende Buch „Windows Internals“, von Mark Russinovich und David Solomon.
  • Windows Sysinternals Administrator’s Reference: Der offizielle Leitfaden zu den Sysinternals-Hilfsprogramme von Mark Russinovich und Aaron Margosis, einschließlich Beschreibungen aller Tools, ihrer Funktionen, wie sie für die Problembehandlung verwendet werden können, und Beispiele für reale Anwendungsfälle.

Download ProcDump herunterladen (714 KB)

ProcDump für Linux herunterladen (GitHub)
ProcDump für Mac herunterladen (GitHub)

Läuft auf:

  • Client: Windows 8.1 und höher.
  • Server: Alle Windows Server 2012 (x64) und höher.

Weitere Informationen