Udostępnij przez


Pliki zrzutu trybu użytkownika

W artykule przedstawiono przegląd plików zrzutu pamięci trybu użytkownika i sposoby ich używania w celu pomocy w rozwiązywaniu usterek i awarii.

Aby uzyskać informacje na temat analizowania pliku zrzutu, zobacz Analizowanie pliku zrzutu w trybie użytkownika.

Typy plików zrzutu trybu użytkownika

Dostępnych jest kilka typów plików zrzutu awaryjnego trybu użytkownika. Różne typy plików zrzutu są podzielone na dwie kategorie:

Możesz uzyskać znaczną ilość informacji, analizując plik zrzutu. Jednak żaden plik zrzutu nie może dostarczyć ilości informacji uzyskanych podczas debugowania awarii przy użyciu debugera.

Pełne zrzuty w trybie użytkownika

Pełny zrzut trybu użytkownika to podstawowy plik zrzutu trybu użytkownika. Pełny plik zrzutu trybu użytkownika obejmuje:

  • Cała przestrzeń pamięci procesu.
  • Obraz wykonywalny programu.
  • Tabela uchwytów.
  • Inne informacje ułatwiające debugerowi odtworzenie pamięci używanej podczas zrzutu.

Można zmniejszyć pełny plik zrzutu trybu użytkownika do pliku typu minidump. Aby zmniejszyć pełny plik zrzutu trybu użytkownika, najpierw załaduj plik zrzutu w debugerze. Następnie użyj polecenia .dump (Utwórz plik zrzutu), aby zapisać nowy plik zrzutu w formacie minidump.

Pomimo ich nazw największy plik minidump zawiera więcej informacji niż pełny plik zrzutu trybu użytkownika. Na przykład polecenia .dump /mf i .dump /ma tworzą pliki większe i bardziej kompletne niż polecenie .dump /f.

.dump /mW trybie użytkownika [MiniOptions] często jest najlepszym wyborem. Pliki zrzutu tworzone przy użyciu tego przełącznika mogą się różnić w rozmiarze od bardzo małych do bardzo dużych. Określając prawidłowy przełącznik MiniOptions , można kontrolować dokładnie, jakie informacje są zawarte.

Mini-zrzuty pamięci

Rozmiar i zawartość pliku minidump różnią się w zależności od programu, z którego generowany jest zrzut, aplikacji tworzącej zrzut oraz wybranych opcji. Czasami plik minidump jest umiarkowanie duży i zawiera pełną pamięć i tabelę obsługi. Innym razem plik minidump jest znacznie mniejszy. Na przykład plik minidump może zawierać tylko informacje o pojedynczym wątku lub zawierać tylko informacje o modułach, do których odwołuje się stos.

Termin minidump jest mylący, ponieważ największe pliki minidump zawierają więcej informacji niż pełny plik zrzutu w trybie użytkownika. Na przykład .dump /mf lub .dump /ma tworzy większy i bardziej kompletny plik niż .dump /f. Z tego powodu zalecamy użycie opcji .dump /m[MiniOptions] zamiast .dump /f do tworzenia wszystkich plików zrzutu trybu użytkownika.

Podczas tworzenia pliku minidump przy użyciu debugera można wybrać informacje do uwzględnienia. Polecenie .dump /m zawiera podstawowe informacje o załadowanych modułach, które składają się na proces docelowy, informacje o wątku i informacje o stosie. Podstawowe polecenie można zmodyfikować przy użyciu dowolnej z następujących opcji przełącznika:

opcja .dump Wpływ na plik zrzutu
/ma Tworzy minidump ze wszystkimi opcjonalnymi dodatkami. Opcja /ma jest równoważna /mfFhut. Dodaje pełne dane pamięci, dane uchwytów, informacje o załadowanych modułach, podstawowe informacje o pamięci i informacje o czasie wątku do minidump.
/mf Dodaje dane pełnej pamięci do minidump. Wszystkie dostępne strony przypisane do aplikacji docelowej są uwzględnione.
/mF Dodaje wszystkie podstawowe informacje o pamięci do minidump. Przełącznik ten dodaje strumień do minizrzutu, który zawiera wszystkie podstawowe informacje o pamięci, a nie tylko o pamięci prawidłowej. Debuger używa informacji do odtworzenia kompletnego układu pamięci wirtualnej procesu podczas debugowania minidump.
/mh Dodaje dane dotyczące uchwytów skojarzonych z aplikacją docelową do minidump.
/mu Dodaje informacje o rozładowanym module do minidump. Ta opcja jest dostępna tylko w systemie Windows Server 2003 i nowszych wersjach systemu Windows.
/mt Dodaje więcej informacji o wątku do minidump. Informacje o wątku obejmują czasy wątków, które można wyświetlić przy użyciu funkcji .ttime (Wyświetl czas wątku) podczas debugowania minidump.
/mi Dodaje pamięć pomocniczą do minidump. Pamięć pomocnicza to każda pamięć, do której odwołuje się wskaźnik w stosie lub magazynie zapasowym, oraz mały region otaczający ten adres.
/mp Dodaje dane z bloków środowiska procesu i bloków środowiska wątku do minidump. Te informacje mogą być przydatne, jeśli potrzebujesz dostępu do informacji systemowych systemu Windows dotyczących procesów i wątków aplikacji.
/mw Dodaje wszystkie zatwierdzone strony prywatne do odczytu i zapisu do minidump.
/md Dodaje wszystkie segmenty danych do odczytu i zapisu w obrazie wykonywalnym do minidump.
/mc Dodaje sekcje kodu w obrazach.
/mr Usuwa z części minidump stosu i pamięci magazynu, które nie są używane do ponownego tworzenia śledzenia stosu. Zmienne lokalne i inne wartości typu danych również są usuwane. Ta opcja nie sprawia, że minidump jest mniejszy (nieużywane sekcje pamięci są zerowane), ale jest przydatne, jeśli chcesz chronić prywatność innych aplikacji.
/mR Usuwa pełne ścieżki modułu z pliku minidump. Uwzględniane są tylko nazwy modułów . Ta opcja jest przydatna, jeśli chcesz chronić prywatność struktury katalogów użytkownika.

Możesz połączyć te opcje przełącznika. Na przykład, użyj polecenia .dump /mfiu, aby utworzyć umiarkowanie duży minidump, który zawiera rozładowane i pomocnicze pamięci. Użyj polecenia .dump /mrR , aby utworzyć minidump, który usuwa niektóre informacje użytkownika. Aby uzyskać szczegółowe informacje o składni, zobacz .dump (Utwórz plik zrzutu).

Narzędzia do tworzenia pliku zrzutu

Do utworzenia pliku zrzutu trybu użytkownika można użyć kilku różnych narzędzi:

ProcDump

ProcDump to narzędzie wiersza polecenia, którego można użyć do monitorowania aplikacji pod kątem skoków użycia CPU i generowania zrzutów pamięci w momencie skoku. Administrator lub deweloper może użyć plików zrzutu awaryjnego, aby określić przyczynę skoku. ProcDump obejmuje również monitorowanie zawieszonych okien (przy użyciu tej samej definicji, z jakiej korzysta Windows i Menedżer zadań) oraz nieobsługiwane wyjątki. Za pomocą narzędzia ProcDump można wygenerować zrzuty na podstawie wartości liczników wydajności systemu. ProcDump może również służyć jako ogólne narzędzie zrzutu procesów, które można osadzić w innych skryptach.

Aby uzyskać informacje na temat tworzenia pliku zrzutu trybu użytkownika przy użyciu narzędzia Sysinternals ProcDump, zobacz ProcDump.

WinDbg i CDB

Debuger konsoli (CDB) i Debuger systemu Windows (WinDbg) to narzędzia debugowania zawarte w zestawie Windows Software Development Kit i Windows Driver Kit. Aby uzyskać informacje o opcjach instalacji, zobacz Pobieranie i instalowanie debugera systemu Windows WinDbg.

Możesz użyć usługi CDB lub WinDbg, aby utworzyć pliki zrzutu trybu użytkownika na wiele sposobów:

  • Automatycznie utwórz plik zrzutu.
  • Utwórz pliki zrzutu podczas debugowania.
  • Zmniejsz istniejący plik zrzutu.

Aby uzyskać więcej informacji na temat narzędzi, zobacz Wprowadzenie do debugowania systemu Windows i debugowanie przy użyciu programu CDB.

Automatyczne tworzenie pliku zrzutu

W przypadku wystąpienia błędu aplikacji system Windows może reagować na jeden z kilku sposobów, w zależności od ustawień debugowania pośmiertnego. Jeśli ustawienia te nakazują narzędziu do debugowania utworzenie pliku zrzutu, zostanie utworzony plik zrzutu pamięci trybu użytkownika. Aby uzyskać więcej informacji, zobacz Włączanie pośmiertnego debugowania.

Tworzenie plików zrzutu podczas debugowania

Gdy usługa CDB lub WinDbg debuguje aplikację w trybie użytkownika, możesz również użyć polecenia zrzutu (Utwórz plik zrzutu), aby utworzyć plik zrzutu.

To polecenie nie powoduje zakończenia aplikacji docelowej. Wybierając określone opcje polecenia, możesz utworzyć plik minidump zawierający dokładnie odpowiednią ilość informacji.

Zmniejszanie istniejącego pliku zrzutu

Aby zmniejszyć plik zrzutu, można użyć usługi CDB lub WinDbg. Aby zmniejszyć plik zrzutu, rozpocznij debugowanie istniejącego pliku zrzutu. Następnie użyj .dump polecenia , aby utworzyć plik zrzutu o mniejszym rozmiarze.

Debugowanie podróży w czasie

Inną opcją debugowania aplikacji w trybie użytkownika jest Time Travel Debugging (TTD). TTD to narzędzie, którego można użyć do rejestrowania procesu podczas jego uruchamiania. Możesz odtworzyć nagranie sesji debugera, aby znaleźć usterkę. Możesz łatwo przejść do różnych części nagrania, aby zrozumieć warunki, które doprowadziły do błędu i jak rozwiązać problem.

TTD ma znaczne zalety w przypadku plików zrzutu awaryjnego, które często nie mają wykonania kodu, które doprowadziły do awarii. Możliwość przechodzenia do tyłu w wykonywaniu kodu może być przydatna podczas określania głównej przyczyny.

Aby uzyskać więcej informacji, zobacz Omówienie debugowania podróży w czasie.

Zobacz także