Udostępnij za pośrednictwem


ProcDump v11.0

Mark Russinovich i Andrew Richards

Opublikowano: 11.03.2022

PobierzPobierz 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:

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:

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 "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):

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

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

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

    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
    
  • Napisz zrzut pełnego i jądra dla procesu o nazwie "hang.exe", gdy jeden z jego okien nie 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 CPU 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 identyfikatora PID 1234 piD svchost, wystąpienie #87, gdy liczba dojść 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ą dołączenia identyfikatora PID dla \Process liczników.

    \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.

    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
    
  • Zapisz do 10 pełnych zrzutów każdego 1 lub drugiego prawdopodobieństwa wyjątku 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 o ciągu debugowania zawiera ciąg "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ę w celu uruchomienia i spróbuj aktywować sklep "aplikacja". Po aktywowaniu nowego wystąpienia procDump zostanie uruchomione:

    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):

    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 odbicia, aby zmniejszyć awarię dla 5 kolejnych wyzwalaczy:

    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:

    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 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.

PobierzPobierz 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