ProcDump v12.0

Mark Russinovich i Andrew Richards

Opublikowano: 7 maja 2026 r.

Pobierz plik ProcDump(1,2 MB)

Pobierz narzędzie ProcDump dla systemu Linux (GitHub)
Pobierz narzędzie ProcDump dla komputerów Mac (GitHub)

Utworzono za pomocą funkcji ZoomIt

Wprowadzenie

ProcDump to narzędzie wiersza polecenia, którego głównym celem jest monitorowanie aplikacji pod kątem skoków użycia procesora CPU i generowanie zrzutów awaryjnych podczas skoku, którego administrator lub deweloper może użyć do określenia przyczyny skoku. ProcDump obejmuje również monitorowanie zawieszających się okien (przy użyciu tej samej definicji zawieszającego się okna, jaką stosują system Windows oraz Menedżer zadań), monitorowanie nieobsługiwanych wyjątków, a także może generować zrzuty na podstawie wartości liczników wydajności systemu. Może również służyć jako ogólne narzędzie zrzutu procesu, które można osadzić w innych skryptach.

Korzystanie z narzędzia ProcDump

Przechwytywanie użycia:

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

Instrukcja instalacji:

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

Odinstalowywanie użycia:

procdump.exe -u

Typy zrzutów:

Typ zrzutu opis
-Mm Napisz plik zrzutu pamięci (mini). (domyślne)
— Obejmuje bezpośrednio i pośrednio przywołaną pamięć (stosy i odwołania do nich).
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
-ma Utwórz pełny plik zrzutu.
— Obejmuje całą pamięć (pamięć obrazu, pamięć mapowaną i pamięć prywatną).
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
-mt Napisz plik zrzutu "Triage".
— Zawiera pamięć, do której odwołano się bezpośrednio (stosy).
— Obejmuje ograniczone metadane (proces, wątek, moduł i uchwyt).
- Próba usunięcia poufnych informacji nie jest gwarantowana.
-mp Utwórz plik zrzutu „MiniPlus”.
— Obejmuje całą pamięć prywatną i cały obraz odczytu/zapisu lub zamapowaną pamięć.
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
- Aby zminimalizować rozmiar, największy obszar pamięci prywatnej ponad 512 MB jest wykluczony.
  Obszar pamięci jest definiowany jako suma alokacji pamięci o tym samym rozmiarze.
  Zrzut jest tak szczegółowy jak pełny zrzut, ale ma 10%-75% jego rozmiaru.
- Uwaga: procesy CLR są zrzucane jako pełne (-ma) ze względu na ograniczenia debugowania.
-mc Napisz plik zrzutu niestandardowego.
— Zawiera pamięć i metadane zdefiniowane przez określoną MINIDUMP_TYPE maskę (Hex).
-Md Utwórz plik zrzutu Callback.
— Zawiera pamięć zdefiniowaną przez procedurę MiniDumpWriteDump wywołania zwrotnego o nazwie MiniDumpCallbackRoutine określonej biblioteki DLL.
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
-mk Utwórz również plik zrzutu pamięci jądra.
— Zawiera stosy jądra systemowego wątków w procesie.
— System operacyjny nie obsługuje zrzutu jądra (-mk) podczas korzystania z klona (-r).
— Przy używaniu wielu rozmiarów zrzutu, dla każdego z rozmiarów pobierany jest zrzut jądra.

Warunki:

Warunek opis
-a Unikaj awarii. Wymaga -r. Jeśli wyzwalacz spowoduje długotrwałe wstrzymanie elementu docelowego z powodu przekroczenia limitu współbieżnych zrzutów, wyzwalacz zostanie pominięty.
-przy Unikaj awarii w przypadku przekroczenia limitu czasu. Anuluj zbieranie wyzwalacza w N sekundach.
-b Traktuj punkty przerwania debugowania jako wyjątki (w przeciwnym razie je ignoruj).
-c Próg CPU powyżej którego należy utworzyć zrzut procesu.
-Cl Próg użycia CPU poniżej którego należy utworzyć zrzut procesu.
-dc Dodaj określony ciąg do wygenerowanego komentarza zrzutu.
-e Napisz zrzut pamięci, gdy proces napotka nieobsługiwany wyjątek.
Uwzględnij element , 1 aby utworzyć zrzut dla wyjątków pierwszej szansy.
Dodaj -ld aby utworzyć zrzut po załadowaniu bibliotekę DLL (modułu), jeśli zastosowano filtrowanie.
Dodaj -ud, aby utworzyć zrzut, gdy biblioteka DLL (moduł) zostanie zwolniona (ma zastosowanie filtrowanie).
Dodaj -ct, aby utworzyć zrzut podczas tworzenia wątku.
Dodaj -et, aby utworzyć zrzut po zakończeniu wątku.
-f Filtruj (uwzględniaj) na podstawie zawartości wyjątków, logowania debugowania i nazwy pliku przy ładowaniu/zwalnianiu bibliotek DLL. Symbole wieloznaczne (*) są obsługiwane.
-fx Filtruj (wyklucz) zawartość wyjątków, rejestrowanie debugowania i nazwę pliku przy ładowaniu/zwalnianiu bibliotek DLL. Symbole wieloznaczne (*) są obsługiwane.
-g Uruchom jako natywny debuger w procesie zarządzanym (bez interoperacyjności).
-h Zapisz zrzut pamięci, jeśli proces ma zawieszone okno (nie odpowiada na komunikaty okna przez co najmniej 5 sekund).
-k Zakończ proces po klonowaniu (-r) lub na końcu zbierania zrzutu.
-l Wyświetl logi debugowania procesu.
-m Próg zatwierdzenia pamięci w MB, po osiągnięciu którego ma zostać utworzony zrzut.
-ml Wyzwalaj, gdy przydział pamięci spadnie poniżej określonej wartości MB.
-n Liczba zrzutów do zapisu przed zakończeniem.
-o Zastąp istniejący plik zrzutu.
-p Wyzwalaj, gdy licznik wydajności wynosi lub przekracza określony próg. W niektórych licznikach i/lub nazwach wystąpień może być rozróżniana wielkość liter.
-pl Wyzwalaj, gdy licznik wydajności spadnie poniżej określonego progu.
-r Zrzut danych za pomocą klonu. Limit współbieżny jest opcjonalny (wartość domyślna 1, maksymalna 5). System operacyjny nie obsługuje zrzutu jądra (-mk) podczas korzystania z klona (-r). UWAGA: wysoka wartość współbieżności może mieć wpływ na wydajność systemu.
- Windows 7: używa Reflection. System operacyjny nie obsługuje -e.
— Windows 8.0: używa odbicia. System operacyjny nie obsługuje -e.
— Windows 8.1+: używa programu PSS. Obsługiwane są wszystkie typy wyzwalaczy.
-s Liczba sekund przed zapisaniem zrzutu (wartość domyślna to 10).
-t Zapisz zrzut pamięci w momencie zakończenia procesu.
-u Traktuj użycie CPU względem jednego rdzenia (używano z -c).
-v TYLKO DEBUGOWANIE: Pełne dane wyjściowe.
-w Poczekaj na uruchomienie określonego procesu, jeśli nie jest uruchomiony.
-wer Kolejkuj największy zrzut pamięci do systemu raportowania błędów w Windows.
-x Uruchom określony obraz z opcjonalnymi argumentami. Jeśli jest to aplikacja sklepu Microsoft Store lub pakiet, narzędzie ProcDump rozpocznie działanie przy następnej aktywacji (tylko).
-y UKRYTE: Aktywacja aplikacji sklepowej.
-64 Domyślnie procDump przechwytuje 32-bitowy zrzut 32-bitowego procesu podczas uruchamiania w 64-bitowym systemie Windows. Ta opcja zastępuje tworzenie 64-bitowego zrzutu. Służy tylko do debugowania podsystemu WOW64.

Umowa licencyjna:

-accepteula Użyj opcji wiersza polecenia, aby automatycznie zaakceptować umowę licencyjną Sysinternals.

Automatyczne kończenie:

-cancel <Target Process PID>

Użycie tej opcji lub ustawienie zdarzenia o nazwie ProcDump-<PID> jest takie samo jak wpisywanie ctrl+C, aby bezpiecznie zakończyć ProcDump. Łagodne zakończenie gwarantuje wznowienie procesu, jeśli przechwytywanie jest aktywne. Anulowanie dotyczy wszystkich wystąpień ProcDump monitorujących proces.

Nazwa pliku:

Domyślna nazwa pliku zrzutu: PROCESSNAME_YYMMDD_HHMMSS.dmp

Następujące zamiany są obsługiwane:

Zastąpienie Wyjaśnienie
PROCESSNAME Nazwa procesu
identyfikator PID Identyfikator procesu
KOD WYJĄTKU Kod wyjątku
RRMMDD Rok/miesiąc/dzień
HHMMSS Godzina/minuta/sekunda

Przykłady

  • Utwórz minizrzut procesu o nazwie 'notepad' (istnieje tylko jedno dopasowanie):

    C:\>procdump notepad
    
  • Napisz pełny zrzut procesu z identyfikatorem PID "4572":

    C:\>procdump -ma 4572
    
  • Najpierw wykonaj mini zrzut pamięci, a następnie pełny zrzut procesu z identyfikatorem PID '4572'.

    C:\>procdump -mm -ma 4572
    
  • Zapisz 3 mini zrzuty procesu o nazwie 'notepad' w odstępach 5-sekundowych.

    C:\>procdump -n 3 -s 5 notepad
    
  • Zapisz maksymalnie 3 mini zrzuty procesu o nazwie "consume", gdy przekracza 20% użycia procesora PRZEZ pięć sekund:

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • Napisz mini zrzut dla procesu o nazwie "hang.exe", gdy jeden z jego okien nie odpowiada przez ponad 5 sekund:

    C:\>procdump -h hang.exe
    
  • Wykonaj pełny zrzut i zrzut pamięci jądra procesu o nazwie "hang.exe", gdy jedno z jego okien przestaje odpowiadać przez ponad 5 sekund.

    C:\>procdump -ma -mk -h hang.exe
    
  • Zapisz mini zrzut procesu o nazwie "outlook", gdy całkowite użycie procesora systemu przekracza 20% przez 10 sekund.

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Zapisz pełny zrzut procesu o nazwie "outlook", gdy liczba dojść programu Outlook przekracza 10 000:

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Zapisz pełny zrzut procesu 'svchost' o PID 1234, instancja #87, gdy liczba uchwytów przekracza 10 000:

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

    Uwaga: wiele liczników wystąpień
    Jeśli istnieje wiele wystąpień licznika, musisz dołączyć nazwę i/lub numer wystąpienia.

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

    Starsze systemy operacyjne wymagają dodania identyfikatora PID dla \Process liczników.

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

    Porada: użyj Monitora Wydajności, aby wyświetlić liczniki (uwzględniając wielkość liter).
    Porada: W przypadku liczników opartych na \Process(*), użyj programu PowerShell, aby przypisać identyfikator PID do #NNN.

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • Napisz pełny zrzut dla drugiego wyjątku prawdopodobieństwa:

    C:\>procdump -ma -e w3wp.exe
    
  • Napisz pełny zrzut dla wyjątku prawdopodobieństwa 1 lub 2:

    C:\>procdump -ma -e 1 w3wp.exe
    
  • Napisz pełny zrzut komunikatu ciągu debugowania:

    C:\>procdump -ma -l w3wp.exe
    
  • Utwórz do 10 pełnych zrzutów pamięci każdego wyjątku pierwszej lub drugiej szansy w3wp.exe.

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • Zapisz maksymalnie 10 pełnych zrzutów, jeśli kod/nazwa wyjątku/msg zawiera 'NotFound':

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • Zapisz maksymalnie 10 pełnych zrzutów, jeśli komunikat debugowania zawiera "NotFound":

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • Poczekaj na proces o nazwie "Notatnik" (i monitoruj go pod kątem wyjątków):

    C:\>procdump -e -w notepad
    
  • Uruchom proces o nazwie "Notatnik" (i monitoruj go pod kątem wyjątków):

    C:\>procdump -e -x c:\dumps notepad
    
  • Zarejestruj się na uruchomienie i spróbuj aktywować aplikację sklepu. Nowe wystąpienie ProcDump rozpocznie działanie po jego aktywacji.

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Zarejestruj się w celu uruchomienia pakietu sklepowego. Nowe wystąpienie ProcDump zostanie uruchomione, gdy zostanie aktywowane (ręcznie).

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • Napisz zrzut MiniPlus magazynu informacji programu Microsoft Exchange, gdy ma on nieobsługiwany wyjątek:

    C:\>procdump -mp -e store.exe
    
  • Wyświetlaj bez zapisywania zrzutu, kody wyjątków/nazwy w3wp.exe:

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; Użyj Reflection, aby zmniejszyć przestoje w przypadku 5 kolejnych wyzwalaczy.

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Użyj usługi PSS, aby zmniejszyć przestój przy 5 współbieżnych wyzwalaczach:

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • Zainstaluj narzędzie ProcDump jako debuger postmortem (AeDebug):

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

    .. lub..

    C:\Dumps>procdump -ma -i
    
  • Odinstaluj narzędzie ProcDump jako debuger postmortem (AeDebug) :

    C:\>procdump -u
    

Zobacz listę przykładowych wierszy poleceń (przykłady są wymienione powyżej):

C:\>procdump -? -e
  • Windows Internals Book Oficjalna strona aktualizacji i errata dla definitywnej książki o wewnętrznych mechanizmach Windows, autorstwa Marka Russinovicha i Davida Solomona.
  • Dokumentacja administratora systemu Windows Sysinternals Oficjalny przewodnik dotyczący narzędzi Sysinternals firmy Mark Russinovich i Aaron Margosis, w tym opisy wszystkich narzędzi, ich funkcji, sposobu ich używania do rozwiązywania problemów i przykładowych rzeczywistych przypadków ich użycia.

Pobierz plik ProcDump(1,2 MB)

Pobierz narzędzie ProcDump dla systemu Linux (GitHub)
Pobierz narzędzie ProcDump dla komputerów Mac (GitHub)

Działa w:

  • Klient: System Windows 11 lub nowszy.
  • Serwer: System Windows Server 2016 lub nowszy.

Dowiedz się więcej