Często zadawane pytania — wyszukiwanie funkcji debugera

Ta dokumentacja zawiera często zadawane pytania dotyczące funkcji debugowania w programie Visual Studio. Mapuje również zadania debugowania lub problemy z odpowiednią funkcją w debugerze programu Visual Studio. Te linki obejmują zadania lub problemy, takie jak debugowanie aplikacji wielowątkowej, nawigacja kodu, przeciek pamięci, inspekcja zmiennych, używanie punktów przerwania, debugowanie kodu zewnętrznego i wiele innych. Jeśli potrzebujesz przeglądu funkcji debugera, zobacz Najpierw zapoznaj się z debugerem .

Punkty przerwania

  • Jak mogę wstrzymać uruchomiony kod, aby sprawdzić wiersz kodu, który może zawierać usterkę?

    Ustaw punkt przerwania. Aby uzyskać więcej informacji, zobacz Używanie punktów przerwania.

  • Czy moja zmienna ma nieoczekiwaną wartość. Czy też chcę sprawdzić moją aplikację, gdy osiągnie określony stan?

    Spróbuj użyć warunkowego punktu przerwania, aby określić, gdzie i kiedy punkt przerwania zostanie aktywowany przy użyciu logiki warunkowej. Kliknij prawym przyciskiem myszy punkt przerwania, aby dodać warunki. Ustaw warunek na wartość true, gdy zmienna jest równa nieoczekiwanej wartości.

    Aby uzyskać więcej informacji, zobacz Warunki punktu przerwania.

  • Jak mogę rejestrować informacje w oknie Dane wyjściowe w konfigurowalnych warunkach bez modyfikowania lub zatrzymywania kodu?

    Punkty śledzenia umożliwiają rejestrowanie informacji w oknie Dane wyjściowe w konfigurowalnych warunkach bez modyfikowania ani zatrzymywania kodu.

  • Jak mogę wiedzieć, kiedy zmienia się wartość mojej zmiennej?

    W przypadku języka C++ustaw punkt przerwania danych.

    W przypadku aplikacji korzystających z platformy .NET Core 3 można również ustawić punkt przerwania danych.

    W przeciwnym razie tylko w przypadku języka C# i F# można śledzić identyfikator obiektu przy użyciu warunkowego punktu przerwania.

  • Jak mogę przerwać wykonywanie tylko wtedy, gdy zostanie osiągnięty inny punkt przerwania?

    Ustaw zależny punkt przerwania, który przerywa wykonywanie tylko wtedy, gdy pierwszy punkt przerwania zostanie osiągnięty. Aby uzyskać więcej informacji, zobacz Zależny punkt przerwania.

  • Czy mogę trafić do punktu przerwania tylko raz?

    Ustaw tymczasowy punkt przerwania, który umożliwia przerwanie kodu tylko raz. Aby uzyskać więcej informacji, zobacz Tymczasowy punkt przerwania.

  • Czy mogę wstrzymać kod wewnątrz pętli w określonej iteracji?

    Ustaw zależny punkt przerwania, który przerywa wykonywanie tylko wtedy, gdy pierwszy punkt przerwania zostanie osiągnięty. Aby uzyskać więcej informacji, zobacz Liczba trafień.

  • Jak mogę wstrzymać kod na początku funkcji, gdy znam nazwę funkcji, ale nie jej lokalizację?

    Można to zrobić za pomocą punktu przerwania funkcji. Aby uzyskać więcej informacji, zobacz Ustawianie punktów przerwania funkcji.

  • Jak mogę wstrzymać kod na początku wielu funkcji o tej samej nazwie?

    Jeśli masz wiele funkcji o tej samej nazwie (przeciążone funkcje lub funkcje w różnych projektach), możesz użyć punktu przerwania funkcji.

  • Zarządzanie punktami przerwania i śledzenie ich

    Użyj okna Punkty przerwania. Aby uzyskać więcej informacji, zobacz Zarządzanie punktami przerwania.

  • Wstrzymywanie kodu i debugowanie po wystąpieniu określonego obsłużonego lub nieobsługiwanego wyjątku

    Mimo że pomocnik wyjątków pokazuje, gdzie wystąpił błąd, jeśli chcesz wstrzymać i debugować określony błąd, możesz poinformować debuger o przerwaniu po wystąpieniu wyjątku.

  • Ustawianie punktu przerwania ze stosu wywołań

    Jeśli chcesz wstrzymać i debugować kod podczas badania przepływu wykonywania lub wyświetlania funkcji w oknach stosu wywołań, zobacz Ustawianie punktu przerwania w oknie stosu wywołań.

  • Wstrzymywanie kodu w określonej instrukcji zestawu

    Można to zrobić, ustawiając punkt przerwania w oknie Dezasemblacji.

Nawigowanie po kodzie

  • Jak nauczyć się poleceń, aby przejść przez kod podczas debugowania?

    Aby uzyskać więcej informacji, zobacz Navigate code with the debugger (Nawigowanie po kodzie za pomocą debugera).

  • Czy mogę uruchomić kod do określonego wiersza, pomijając punkty przerwania bez ich usuwania lub wyłączania?

    W tych scenariuszach można użyć polecenia "Force Run To Cursor". Punkty przerwania można zachować, a debuger przejdzie przez nie do momentu osiągnięcia wiersza kodu za pomocą kursora. Spowoduje to również pominięcie któregokolwiek z warunków przerwania wyjątków pierwszej szansy, które mogą wystąpić. Aby uzyskać więcej informacji, zobacz Navigate code with the debugger (Nawigowanie po kodzie za pomocą debugera).

  • Jeśli mój wiersz kodu zawiera wywołania do różnych metod, czy mogę przejść do określonej metody?

    Kliknij prawym przyciskiem myszy wiersz kodu, aby wyświetlić menu kontekstowe, które umożliwia wybranie pozycji "Przejdź do określonego". Spowoduje to wyświetlenie listy wszystkich metod, do których można przejść. Teraz możesz wybrać metodę zainteresowania.

Inspekcja i wizualizowanie danych

  • Jak mogę sprawdzić wartość zmiennych podczas uruchamiania aplikacji?

    Umieść kursor na zmiennych przy użyciu porad dotyczących danych lub sprawdź zmienne w oknie Autos and Locals (Ustawienia automatyczne i lokalne).

  • Czy mogę obserwować zmianę wartości określonej zmiennej?

    Ustaw zegarek na zmiennej. Aby uzyskać więcej informacji, zobacz Ustawianie zegarka dla zmiennych.

  • Jak wyświetlić ciągi, które są zbyt długie dla okna debugera?

    Wizualizator ciągów pokazuje ciągi, które są zbyt długie dla porad dotyczących danych lub okna debugera. Może również pomóc zidentyfikować źle sformułowane ciągi.
    Wbudowany wizualizator ciągów w programie Visual Studio obejmuje opcje tekstowe, XML, HTML i JSON.

  • Jak wyświetlić duże obiekty kolekcji?

    Wizualizator zestawu danych umożliwia wyświetlanie zawartości elementu DataSet, DataTable, DataView lub DataViewManager. Program IEnumerable Visualizer umożliwia wyświetlanie obiektów, takich jak tablice, lista itp. Aby uzyskać więcej informacji, zobacz Wizualizatory tabelaryczne.

Debugowanie aplikacji, która jest już uruchomiona

  • Jak można debugować uruchomione aplikacje na komputerach lokalnych lub zdalnych, debugować wiele procesów jednocześnie, debugować aplikacje, które nie zostały utworzone w programie Visual Studio lub debugować dowolną aplikację, której nie uruchamiałem z poziomu programu Visual Studio?

    Zobacz Dołączanie do uruchomionych procesów.

  • Jak mogę wielokrotnie dołączać do tej samej aplikacji?

    Możesz użyć opcji Ponowne dołączanie do procesu (Shift+Alt+P), aby łatwo umożliwić łatwe rozpoczęcie debugowania aplikacji za pomocą jednego kliknięcia bez konieczności przechodzenia przez okno dialogowe Dołączanie do procesu za każdym razem. Zobacz Ponowne dołączenie do procesu

Debugowanie aplikacji wielowątkowych

Analizowanie pamięci

  • Czy moja aplikacja ma przeciek pamięci?

    Utwórz migawkę i otwórz ją za pomocą narzędzia pamięci, aby kontynuować rozwiązywanie problemów. Zobacz Mierzenie użycia pamięci.

  • Jak analizować użycie pamięci dla aplikacji natywnych lub zarządzanych?

    Użyj narzędzia pamięci programu Visual Studio za pośrednictwem debugowania na żywo, zrzutów sterty lub profilera wydajności.
    Zobacz Wybieranie narzędzia do analizy pamięci.

  • Jak mogę analizować użycie pamięci dla aplikacji natywnych lub zarządzanych bez dołączania debugera? Użyj profilera wydajności programu Visual Studio z włączonym narzędziem użycia pamięci.
    Zobacz Analizowanie użycia pamięci.

  • Czy mogę porównać użycie pamięci między dwoma punktami w czasie?

    Porównaj migawki w narzędziu pamięci lub porównaj dwa zrzuty sterty przy użyciu funkcji różnic. Zobacz Analizowanie użycia pamięci.

Debugowanie kodu zewnętrznego

  • Czy mogę zobaczyć tylko kod użytkownika podczas debugowania?

    Just My Code to funkcja debugowania programu Visual Studio, która automatycznie wykonuje kroki w wywołaniach systemu, struktury i innego kodu innego niż użytkownik. W oknie Stos wywołań po prostu mój kod zwija te wywołania do ramek [Kod zewnętrzny]. Zobacz Debugowanie tylko kodu użytkownika za pomocą tylko mojego kodu

  • Jak mogę wyświetlić lub debugować nieprzetworzone instrukcje dotyczące zestawu wykonywane przez mój program?

    Użyj okna dezasemblacji z debugowania > dezasemblacji systemu Windows > . Jednocześnie można przejść przez jedną instrukcję, a nawet ustawić punkty przerwania dla poszczególnych instrukcji dotyczących zestawu.

  • Czy widzę kod źródłowy bibliotek platformy .NET?

    Włącz serwery symboli firmy Microsoft z pozycji Symbole opcji > debugowania>, aby pobrać symbole i źródło bibliotek platformy .NET. Zobacz Określanie symbolu

  • Jak załadować pliki PDB z określonej lub udostępnionej lokalizacji lub serwera?

    Skonfiguruj serwery symboli na podstawie symboli opcji > debugowania>. Zobacz Określanie symbolu

  • Jak nigdy nie załadować określonego pliku PDB? A jak zawsze mogę go załadować?

    Skonfiguruj listy dołączania i wykluczania w symbolach opcji > debugowania>.
    Zobacz Określanie symbolu

Konfigurowanie debugowania

  • Jak mogę skonfigurować ustawienia debugera?

    Aby skonfigurować opcje debugera i ustawienia projektu debugera, zobacz Ustawienia debugera i przygotowanie.

  • Jak dostosować informacje wyświetlane w debugerze?

    Możesz wyświetlić informacje inne niż typ obiektu jako wartość w różnych oknach debugera. W przypadku kodu C#, Visual Basic, F# i C++/CLI użyj atrybutu DebuggerDisplay . Aby uzyskać bardziej zaawansowane opcje, możesz również dostosować interfejs użytkownika, tworząc niestandardowy wizualizator. W przypadku natywnego języka C++użyj struktury NatVis.

Dodatkowe zadania

  • Czy muszę zapisać zrzut?

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

  • Jak mogę przeanalizować plik zrzutu?

    Otwórz zrzut, wybierając pozycję Plik > otwórz w programie Visual Studio. Aby rozpocząć debugowanie, wybierz pozycję Debuguj tylko za pomocą funkcji Zarządzane, Debuguj tylko z natywną, Debuguj z użyciem funkcji mieszanej lub Debuguj z pamięcią zarządzaną. Zobacz Pliki zrzutu

  • Czy mogę edytować kod podczas sesji debugowania?

    Użyj opcji Edytuj i kontynuuj. W przypadku języka XAML użyj Przeładowywanie na gorąco XAML.

  • Jak mogę debugować na maszynach zdalnych?

    Zobacz Debugowanie zdalne.

  • Jak rozwiązać problemy z wydajnością?

    Zobacz Pierwsze spojrzenie na narzędzia profilowania

  • Jak mogę naprawić wyjątek?

    Zobacz Naprawianie wyjątku.