ProcDump v11.0
Mark Russinovich i Andrew Richards
Opublikowano: 11.03.2022
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:
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
Linki powiązane
- 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 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
- Defrag Tools: #9 — ProcDump Ten odcinek narzędzi Defrag Tools obejmuje informacje o tym, co narzędzie przechwytuje i oczekiwane czasy przestoju
- Defrag Tools: #10 — ProcDump — Wyzwalacze W tym odcinku omówiono opcje wyzwalacza w szczególności wyjątki prawdopodobieństwa 1 i 2.
- Narzędzia Defrag Tools: #11 — ProcDump — Windows 8 & Process Monitor W tym odcinku omówiono obsługę nowoczesnych aplikacji i obsługę rejestrowania monitora procesów