Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


ProcDump v11.0

Mark Russinovich i Andrew Richards

Opublikowano: 11.03.2022

Pobierz Pobierz plik ProcDump(714 KB)

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 okna zawiesza się, którego używa System Windows i Menedżer zadań), nieobsługiwanego monitorowania wyjątków i 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:

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

Zainstaluj użycie:

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

Odinstalowywanie użycia:

Windows Command Prompt
procdump.exe -u

Typy zrzutów:

Typ zrzutu opis
-Mm Napisz plik zrzutu "Mini". (domyślne)
— Obejmuje bezpośrednio i pośrednio przywołyną pamięć (stosy i odwołania do nich).
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
-ma Napisz plik zrzutu "Full".
— Obejmuje całą pamięć (obraz, mapowany i prywatny).
— obejmuje wszystkie metadane (proces, wątek, moduł, uchwyt, przestrzeń adresowa itp.).
-Mt Napisz plik zrzutu "Klasyfikacja".
— Zawiera bezpośrednio przywołyną pamięć (stosy).
— Obejmuje ograniczone metadane (proces, wątek, moduł i uchwyt).
- Próba usunięcia poufnych informacji nie jest gwarantowana.
-Mp Napisz plik zrzutu "MiniPlus".
— Obejmuje całą pamięć prywatną i cały obraz odczytu/zapisu lub zamapowany 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 10%-75% rozmiar.
- Uwaga: procesy CLR są po cenach dumpingowych 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ę (szesnastkę).
-Md Napisz plik zrzutu "Wywołanie zwrotne".
— 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 Napisz również plik zrzutu jądra.
— Zawiera stosy jądra wątków w procesie.
— System operacyjny nie obsługuje zrzutu jądra (-mk) podczas korzystania z klonowania (-r).
— W przypadku używania wielu rozmiarów zrzutu jest pobierany zrzut jądra dla każdego rozmiaru zrzutu.

Warunki:

Warunek opis
-a Unikaj awarii. Wymaga .-r Jeśli wyzwalacz spowoduje wstrzymanie elementu docelowego przez dłuższy czas z powodu przekroczenia limitu współbieżnego zrzutu, wyzwalacz zostanie pominięty.
-przy Unikaj awarii w przypadku przekroczenia limitu czasu. Anuluj kolekcję wyzwalacza w N sekundach.
-b Traktuj punkty przerwania debugowania jako wyjątki (w przeciwnym razie je ignoruj).
-c Próg procesora CPU powyżej którego ma zostać utworzony zrzut procesu.
-Cl Próg procesora CPU poniżej którego należy utworzyć zrzut procesu.
-Dc Dodaj określony ciąg do wygenerowanego komentarza zrzutu.
-e Napisz zrzut, gdy proces napotka nieobsługiwany wyjątek.
Uwzględnij element , 1 aby utworzyć zrzut dla wyjątków pierwszej szansy.
Dodaj -ld polecenie , aby utworzyć zrzut po załadowaniu biblioteki DLL (modułu) (zastosowanie filtrowania).
Dodaj -ud polecenie , aby utworzyć zrzut, gdy biblioteka DLL (moduł) zostanie zwolniona (ma zastosowanie filtrowanie).
Dodaj -ct polecenie , aby utworzyć zrzut podczas tworzenia wątku.
Dodaj -et polecenie , aby utworzyć zrzut po zakończeniu wątku.
-f Filtruj (dołączaj) do zawartości wyjątków, rejestrowanie debugowania i nazwę 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 międzyoperacyjności).
-h Zapis zrzutu, jeśli proces ma zawieszone okno (nie odpowiada na komunikaty okna przez co najmniej 5 sekund).
-k Zabij proces po sklonowaniu (-r) lub na końcu kolekcji zrzutu.
-l Wyświetl rejestrowanie debugowania procesu.
-m Próg zatwierdzenia pamięci w MB, w którym ma zostać utworzony zrzut.
-Ml Wyzwalaj, gdy zatwierdzenie pamięci spadnie poniżej określonej wartości MB.
-n Liczba zrzutów do zapisu przed zakończeniem pracy.
-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 przy użyciu 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 klonowania (-r). UWAGA: wysoka wartość współbieżności może mieć wpływ na wydajność systemu.
- Windows 7: używa odbicia. System operacyjny nie obsługuje systemu operacyjnego -e.
— Windows 8.0: używa odbicia. System operacyjny nie obsługuje systemu operacyjnego -e.
— Windows 8.1+: używa programu PSS. Obsługiwane są wszystkie typy wyzwalaczy.
-s Kolejne sekundy przed zapisem zrzutu (wartość domyślna to 10).
-t Zapisz zrzut po zakończeniu procesu.
-u Traktuj użycie procesora CPU względem jednego rdzenia (używanego z usługą -c).
-v TYLKO DEBUGOWANIE: Pełne dane wyjściowe.
-w Poczekaj na uruchomienie określonego procesu, jeśli nie jest uruchomiony.
-Wer Kolejkuj zrzut (największy), aby Raportowanie błędów systemu Windows.
-x Uruchom określony obraz z opcjonalnymi argumentami. Jeśli jest to aplikacja ze sklepu lub pakiet, narzędzie ProcDump rozpocznie się w następnej aktywacji (tylko).
-y UKRYTE: Aktywacja aplikacji ze sklepu.
-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. Pełne zakończenie gwarantuje wznowienie procesu, jeśli przechwytywanie jest aktywne. Anulowanie dotyczy wszystkich wystąpień ProcDump monitorujących proces.

Pod nazwą:

Domyślna nazwa pliku zrzutu: PROCESSNAME_YYMMDD_HHMMSS.dmp

Obsługiwane są następujące podstawianie:

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

Przykłady

  • Napisz mini zrzut procesu o nazwie "Notatnik" (może istnieć tylko jedno dopasowanie):

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

    Windows Command Prompt
    C:\>procdump -ma 4572
    
  • Najpierw napisz mini, a następnie pełny zrzut procesu z identyfikatorem PID "4572":

    Windows Command Prompt
    C:\>procdump -mm -ma 4572
    
  • Zapisz 3 mini zrzuty 5 sekund od procesu o nazwie "Notatnik":

    Windows Command Prompt
    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:

    Windows Command Prompt
    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:

    Windows Command Prompt
    C:\>procdump -h hang.exe
    
  • Napisz zrzut pełnego i jądra dla procesu o nazwie "hang.exe", gdy jeden z jego okien nie odpowiada przez ponad 5 sekund:

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

    Windows Command Prompt
    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:

    Windows Command Prompt
    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • Zapisz pełny zrzut identyfikatora PID 1234 piD svchost, wystąpienie #87, gdy liczba dojść przekracza 10 000:

    Windows Command Prompt
    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.

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

    Starsze systemy operacyjne wymagają dołączenia identyfikatora PID dla \Process liczników.

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

    Porada: użyj monitor wydajności, aby wyświetlić liczniki (ważność wielkości liter).
    Porada: W przypadku \Process(*) liczników opartych użyj programu PowerShell, aby zamapować identyfikator PID na wartość #NNN.

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

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

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

    Windows Command Prompt
    C:\>procdump -ma -l w3wp.exe
    
  • Zapisz do 10 pełnych zrzutów każdego 1 lub drugiego prawdopodobieństwa wyjątku w3wp.exe:

    Windows Command Prompt
    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':

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

    Windows Command Prompt
    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):

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

    Windows Command Prompt
    C:\>procdump -e -x c:\dumps notepad
    
  • Zarejestruj się w celu uruchomienia i spróbuj aktywować sklep "aplikacja". Po aktywowaniu nowego wystąpienia procDump zostanie uruchomione:

    Windows Command Prompt
    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • Zarejestruj się w celu uruchomienia sklepu "package". Nowe wystąpienie ProcDump zostanie uruchomione po aktywowaniu (ręcznie):

    Windows Command Prompt
    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:

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

    Windows Command Prompt
    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0; Użyj odbicia, aby zmniejszyć awarię dla 5 kolejnych wyzwalaczy:

    Windows Command Prompt
    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1+; Użyj usługi PSS, aby zmniejszyć awarię dla 5 współbieżnych wyzwalaczy:

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

    Windows Command Prompt
    C:\>procdump -ma -i c:\dumps
    

    .. lub..

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

    Windows Command Prompt
    C:\>procdump -u
    

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

Windows Command Prompt
C:\>procdump -? -e
  • Windows Internals Book Oficjalna strona aktualizacji i errata dla ostatecznej książki na windows wewnętrznych, mark Russinovich i David Solomon.
  • 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 Pobierz plik ProcDump(714 KB)

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

Działa w:

  • Klient: Windows 8.1 lub nowszy.
  • Serwer: Windows Server 2012 i nowsze.

Dowiedz się więcej