Udostępnij za pośrednictwem


Pliki zrzutu w debugerze programu Visual Studio

Plik zrzutu to migawka przedstawiająca proces, który był wykonywany i moduły załadowane dla aplikacji w danym momencie. Zrzut z informacjami o stercie zawiera również migawkę pamięci aplikacji w tym momencie.

Otwieranie pliku zrzutu ze stertą w programie Visual Studio przypomina zatrzymywanie się w punkcie przerwania w sesji debugowania. Chociaż nie można kontynuować wykonywania, możesz zbadać stosy, wątki i zmienne wartości aplikacji w momencie zrzutu.

Zrzuty są najczęściej używane do debugowania problemów z maszynami, do których deweloperzy nie mają dostępu. Możesz użyć pliku zrzutu z komputera klienta, gdy nie możesz odtworzyć awarii lub nie odpowiadać programu na własnej maszynie. Testerzy tworzą również zrzuty, aby zapisywać dane programu o awarii lub nie odpowiadać na potrzeby większej liczby testów.

Debuger programu Visual Studio może zapisywać pliki zrzutu dla kodu zarządzanego lub natywnego. Może debugować pliki zrzutu utworzone przez program Visual Studio lub inne aplikacje, które zapisują pliki w formacie minidump .

Wymagania i ograniczenia

  • Aby debugować pliki zrzutu z 64-bitowych maszyn, program Visual Studio musi być uruchomiony na 64-bitowej maszynie.
  • Program Visual Studio może debugować pliki zrzutu zarządzanych aplikacji z systemu operacyjnego Linux.
  • Program Visual Studio umożliwia debugowanie plików zrzutu macierzystych aplikacji z urządzeń ARM. Może również debugować zrzuty aplikacji zarządzanych z urządzeń ARM, ale tylko w natywnym debugerze.
  • Aby debugować pliki zrzutu trybu jądra lub użyć rozszerzenia debugowania SOS.dll w programie Visual Studio, pobierz narzędzia debugowania dla systemu Windows w zestawie Windows Driver Kit (WDK).
  • Program Visual Studio nie może debugować plików zrzutu zapisanych w starszym, pełnym formacie zrzutu w trybie użytkownika. Pełny zrzut w trybie użytkownika nie jest taki sam jak zrzut ze stertą.
  • Debugowanie plików zrzutu zoptymalizowanego kodu może być mylące. Na przykład kompilator inlining funkcji może spowodować nieoczekiwane stosy wywołań, a inne optymalizacje mogą zmienić okres istnienia zmiennych.

Zrzut plików z stertami lub bez

Pliki zrzutu mogą lub nie mają informacji o stercie.

  • Pliki zrzutu ze stertami zawierają migawkę pamięci aplikacji, w tym wartości zmiennych, w czasie zrzutu. Program Visual Studio zapisuje również pliki binarne załadowanych modułów natywnych w pliku zrzutu przy użyciu sterty, co może znacznie ułatwić debugowanie. Program Visual Studio może ładować symbole z pliku zrzutu ze stertą, nawet jeśli nie może znaleźć pliku binarnego aplikacji.

  • Pliki zrzutu bez sterty są znacznie mniejsze niż zrzuty ze stertami, ale debuger musi załadować pliki binarne aplikacji, aby znaleźć informacje o symbolach. Załadowane pliki binarne muszą dokładnie odpowiadać tym uruchomionym podczas tworzenia zrzutu. Zrzuty plików bez stert zapisują tylko wartości zmiennych stosu.

Tworzenie pliku zrzutu

Podczas debugowania procesu w programie Visual Studio możesz zapisać plik zrzutu, gdy debuger zatrzymał się w punkcie przerwania lub wyjątku.

Po włączeniu debugowania just in time można dołączyć debuger programu Visual Studio do procesu, który uległ awarii poza programem Visual Studio, a następnie zapisać plik zrzutu z debugera. Zobacz Dołączanie do uruchomionych procesów.

Aby zapisać plik zrzutu:

  1. Po zatrzymaniu w punkcie błędu lub przerwania podczas debugowania wybierz pozycję Debuguj>zapisz zrzut jako.

  2. W oknie dialogowym Zapisywanie zrzutu jako w obszarze Zapisz jako typ wybierz pozycję Minidump lub Minidump z stertą (ustawienie domyślne).

  3. Przejdź do ścieżki i wybierz nazwę pliku zrzutu, a następnie wybierz pozycję Zapisz.

Uwaga

Pliki zrzutu można tworzyć za pomocą dowolnego programu obsługującego format minidump systemu Windows. Na przykład narzędzie wiersza polecenia Procdump z poziomu systemu Windows Sysinternals może tworzyć pliki zrzutu awaryjnego procesu na podstawie wyzwalaczy lub na żądanie. Zobacz Wymagania i ograniczenia , aby uzyskać informacje o korzystaniu z innych narzędzi do tworzenia plików zrzutu.

Otwieranie pliku zrzutu

  1. W programie Visual Studio wybierz pozycję Plik>Otwórz>plik.

  2. W oknie dialogowym Otwieranie pliku znajdź i wybierz plik zrzutu. Zwykle ma on rozszerzenie .dmp . Wybierz przycisk OK.

    Okno Podsumowanie pliku Minidump zawiera podsumowanie i informacje o module dla pliku zrzutu oraz akcje, które można wykonać.

    Zrzut ekranu przedstawiający stronę podsumowania Minidump.

    Zrzut ekranu przedstawiający stronę podsumowania Minidump.

  3. W obszarze Akcje:

    • Aby ustawić lokalizacje ładowania symboli, wybierz pozycję Ustaw ścieżki symboli.
    • Aby rozpocząć debugowanie, wybierz pozycję Debuguj tylko za pomocą funkcji Zarządzane, Debuguj z użyciem funkcji mieszanej, Debuguj tylko z natywną lub Debuguj pamięć zarządzaną. Aby przeanalizować pamięć zarządzaną, zobacz Raporty typu zarządzanego.
    • Aby uzyskać analizę pamięci na zrzucie, wybierz pozycję Uruchom analizę diagnostyczną i zobacz Debugowanie zrzutu pamięci zarządzanej za pomocą analizatorów diagnostycznych platformy .NET.

Znajdowanie plików .exe, .pdb i źródłowych

Aby korzystać z funkcji pełnego debugowania w pliku zrzutu, program Visual Studio wymaga:

  • Plik .exe, dla którego utworzono zrzut, oraz inne pliki binarne (takie jak biblioteki DLL) używane przez proces zrzutu.
  • Pliki symboli (.pdb) dla .exe i innych plików binarnych.
  • Pliki .exe i .pdb , które dokładnie pasują do wersji i kompilacji plików podczas tworzenia zrzutu.
  • Pliki źródłowe dla odpowiednich modułów. Można użyć dezasemblacji modułów, jeśli nie możesz znaleźć plików źródłowych.

Jeśli zrzut zawiera dane stert, program Visual Studio może poradzić sobie z brakującymi plikami binarnymi dla niektórych modułów, ale musi mieć pliki binarne dla wystarczającej liczby modułów, aby wygenerować prawidłowe stosy wywołań.

Ścieżki wyszukiwania dla plików .exe

Program Visual Studio automatycznie przeszukuje te lokalizacje dla plików .exe , które nie są uwzględnione w pliku zrzutu:

  1. Folder zawierający plik zrzutu.
  2. Ścieżka modułu określa plik zrzutu, który jest ścieżką modułu na maszynie, która zebrała zrzut.
  3. Ścieżki symboli określone w menu Narzędzia (lub Debugowanie)> Opcje Debugowanie>> symboli. Możesz również otworzyć stronę Symbole w panelu Akcje okna Podsumowanie pliku zrzutu. Na tej stronie możesz dodać więcej lokalizacji do wyszukiwania.

Użyj stron Brak danych binarnych, Brak symboli lub Nie znaleziono źródła

Jeśli program Visual Studio nie może odnaleźć plików, których potrzebuje do debugowania modułu w zrzucie, zostanie wyświetlona strona Nie znaleziono pliku binarnego, Brak znalezionych symboli lub Nie znaleziono źródła. Te strony zawierają szczegółowe informacje o przyczynie problemu i udostępniają linki akcji, które mogą pomóc w zlokalizowaniu plików. Zobacz Określanie symboli (.pdb) i plików źródłowych.