Udostępnij za pomocą


Tworzenie wizualnej mapy stosu wywołań podczas debugowania (C#, Visual Basic, C++, JavaScript)

Utwórz mapę kodu, aby wizualnie śledzić stos wywołań podczas debugowania. Możesz tworzyć notatki na mapie, aby śledzić, co robi kod, aby skoncentrować się na znajdowaniu usterek.

Aby uzyskać szczegółowe informacje o poleceniach i akcjach, których można używać z mapami kodu, zobacz Przeglądanie i rozmieszczanie map kodu.

Ważne

Mapy kodu można tworzyć tylko w programie Visual Studio Enterprise.

Oto krótkie spojrzenie na mapę kodu:

Debugowanie za pomocą stosów wywołań w mapach kodu

Mapuj stos wywołań

  1. W projekcie Visual Studio Enterprise C#, Visual Basic, C++lub JavaScript rozpocznij debugowanie, wybierając pozycję Debuguj>rozpocznij debugowanie lub naciskając F5.

  2. Po wprowadzeniu trybu przerwania aplikacji lub przejściu do funkcji wybierz pozycję Debuguj>mapę kodu lub naciśnij Ctrl+Shift+`.

    Bieżący stos wywołań jest wyświetlany w kolorze pomarańczowym na nowej mapie kodu:

    Zobacz stos wywołań na mapie kodu

Mapa kodu jest aktualizowana automatycznie podczas dalszego debugowania. Zmiana elementów mapy lub układu nie wpływa na kod w żaden sposób. Możesz zmieniać nazwy, przenosić lub usuwać dowolne elementy na mapie.

Aby uzyskać więcej informacji o elemencie, umieść kursor na nim i przyjrzyj się etykietce narzędzia elementu. Możesz również wybrać pozycję Legenda na pasku narzędzi, aby dowiedzieć się, co oznacza każda ikona.

Legenda mapy kodu

Uwaga / Notatka

Komunikat Diagram może być oparty na starszej wersji kodu w górnej części mapy kodu oznacza, że kod mógł ulec zmianie po ostatniej aktualizacji mapy. Na przykład wywołanie związane z mapą może już nie istnieć w kodzie. Zamknij komunikat, a następnie spróbuj ponownie skompilować rozwiązanie przed ponownym zaktualizowaniem mapy.

Mapuj kod zewnętrzny

Domyślnie na mapie jest wyświetlany tylko własny kod. Aby wyświetlić kod zewnętrzny na mapie:

  • Kliknij prawym przyciskiem myszy w oknie Stos wywołań i wybierz polecenie Pokaż kod zewnętrzny:

    Wyświetlanie kodu zewnętrznego przy użyciu okna stosu wywołań

  • Możesz też wyczyścić pole wyboru Włącz tylko mój kod w programie Visual Studio:

    Ta opcja jest dostępna w okienku Narzędzia (lub Debugowanie) >w sekcji Wszystkie ustawienia>Debugowanie>ogólne :

    Zrzut ekranu przedstawiający sposób wybierania opcji Włącz tylko mój kod w programie Visual Studio.

    Ta opcja jest dostępna w oknie dialogowymNarzędzia (lub >) w sekcji Ogólne debugowania>:

    Pokaż kod zewnętrzny przy użyciu okna dialogowego Opcje

Kontrolowanie układu mapy

Zmiana układu mapy nie wpływa na kod w żaden sposób.

Aby kontrolować układ mapy, wybierz menu Układ na pasku narzędzi mapy.

W menu Układ można wykonywać następujące czynności:

  • Zmień układ domyślny.
  • Zatrzymaj automatyczne rozmieszczanie mapy, usuwając zaznaczenie opcji Automatyczne układanie podczas debugowania.
  • Zmień kolejność mapy tak mało, jak to możliwe podczas dodawania elementów, usuwając zaznaczenie układu przyrostowego.

Zanotuj kod

Możesz dodawać komentarze, aby śledzić, co się dzieje w kodzie.

Aby dodać komentarz, kliknij prawym przyciskiem myszy mapę kodu i wybierz polecenie Edytuj>nowy komentarz, a następnie wpisz komentarz.

Aby dodać nowy wiersz w komentarzu, naciśnij Shift+Enter.

Dodaj komentarz do stosu wywołań na mapie kodowej

Zaktualizuj mapę przy użyciu kolejnego stosu wywołań

Gdy uruchamiasz aplikację w następnym punkcie przerwania lub przechodzisz do funkcji, mapa automatycznie dodaje nowe stosy wywołań.

Aktualizowanie mapy kodu przy użyciu DebuggerMap_AddClearCallStack następnego stosu wywołań

Aby zatrzymać automatyczne dodawanie nowych stosów wywołań, wybierz opcję Pokaż stos wywołań na mapie kodu automatycznie na pasku narzędzi mapy kodu. Mapa nadal wyróżnia istniejące stosy wywołań. Aby ręcznie dodać bieżący stos wywołań do mapy, naciśnij Ctrl+Shift+`.

Dodawanie powiązanego kodu do mapy

Teraz, gdy masz mapę w języku C# lub Visual Basic, możesz dodawać elementy, takie jak pola, właściwości i inne metody, aby śledzić, co dzieje się w kodzie.

Aby przejść do definicji metody w kodzie, kliknij dwukrotnie metodę na mapie lub wybierz ją i naciśnij F12 lub kliknij ją prawym przyciskiem myszy i wybierz polecenie Przejdź do definicji.

Przejdź do definicji kodu dla metody na mapie kodu

Aby dodać elementy, które chcesz śledzić na mapie, kliknij prawym przyciskiem myszy metodę i wybierz elementy, które chcesz śledzić. Ostatnio dodane elementy są wyświetlane na zielono.

Pola powiązane z metodą na mapie kodu stosu wywołań

Uwaga / Notatka

Domyślnie dodanie elementów do mapy powoduje również dodanie węzłów grupy nadrzędnej, takich jak klasa, przestrzeń nazw i zestaw. Tę funkcję można wyłączyć i włączyć, wybierając przycisk Uwzględnij elementy nadrzędne na pasku narzędzi mapy kodu lub naciskając Ctrl podczas dodawania elementów.

Pokaż pola w metodzie na mapie kodu stosu wywołań

Kontynuuj tworzenie mapy, aby wyświetlić więcej kodu.

Zobacz metody używające pola: mapa kodu stosu wywołań

Metody używające pola na mapie kodu stosu wywołań

Znajdowanie usterek przy użyciu mapy

Wizualizowanie kodu może pomóc w szybszym znalezieniu usterek. Załóżmy na przykład, że badasz usterkę w aplikacji rysunkowej. Gdy narysujesz linię i spróbujesz ją cofnąć, nic się nie dzieje, dopóki nie narysujesz innej linii.

Ustawiasz punkty przerwania w metodach clear, undo i Repaint, rozpoczynasz debugowanie i tworzysz mapę podobną do tej:

Dodaj kolejny stos wywołań do mapy kodu

Widzisz, że wszystkie gesty użytkownika na mapie wywołują Repaint, z wyjątkiem undo. Może to wyjaśnić, dlaczego undo nie działa natychmiast.

Po naprawieniu usterki i kontynuowaniu uruchamiania aplikacji mapa dodaje nowe wywołanie z undo do :Repaint

Dodaj nowe wywołanie metody na stosie wywołań na mapie kodu

Udostępnianie mapy innym osobom

Możesz wyeksportować mapę, wysłać ją do innych osób za pomocą programu Microsoft Outlook, zapisać ją w rozwiązaniu i zaewidencjonować w kontroli wersji.

Aby udostępnić lub zapisać mapę, użyj opcji Udostępnij na pasku narzędzi mapy kodu.

Udostępnianie mapy kodu stosu wywołań innym osobom