Udostępnij za pomocą


Debugowanie aplikacji przy użyciu map kodu

Mapy kodu w programie Visual Studio mogą pomóc uniknąć utraty dużych baz kodu, nieznanego kodu lub starszego kodu. Na przykład podczas debugowania może być konieczne przyjrzenie się kodowi w wielu plikach i projektach. Użyj map kodu, aby poruszać się po fragmentach kodu i zrozumieć relacje między nimi. W ten sposób nie musisz śledzić tego kodu w głowie ani rysować oddzielnego diagramu. Dlatego po przerwaniu pracy mapy kodu pomagają odświeżyć pamięć o kodzie, nad którym pracujesz.

Mapa kodu — mapuj relacje w kodzie

Zielona strzałka pokazuje, gdzie kursor pojawia się w edytorze

Aby uzyskać szczegółowe informacje na temat poleceń i akcji, których można używać podczas pracy z mapami kodu, zobacz Przeglądanie i zmienianie kolejności map kodu.

Dowiedz się więcej o debugowaniu w programie Visual Studio za pomocą narzędzia debugera.

Uwaga / Notatka

Aby tworzyć i edytować mapy kodu, potrzebujesz wersji Visual Studio Enterprise. W wersjach Visual Studio Community i Professional można otwierać diagramy wygenerowane w wersji Enterprise, ale nie można ich edytować.

Omówienie problemu

Załóżmy, że w programie rysunkowym występuje usterka, nad którą pracujesz. Aby odtworzyć usterkę, otwórz rozwiązanie w programie Visual Studio i naciśnij F5 , aby rozpocząć debugowanie.

Gdy narysujesz linię i wybierzesz Cofnij ostatnie pociągnięcie, nic się nie dzieje, dopóki nie narysujesz następnej linii.

Mapa kodu — usterka odtwarzania

Dlatego zacznij badać, wyszukując metodę Undo . Znajdziesz go w PaintCanvas klasie .

Mapa kodu — znajdowanie kodu

Rozpoczynanie mapowania kodu

Teraz rozpocznij mapowanie undo metody i jej relacji. W edytorze kodu należy dodać metodę undo i pola, do których się odnosi, do nowej mapy kodu. Podczas tworzenia nowej mapy indeksowanie kodu może zająć trochę czasu. Dzięki temu późniejsze operacje będą działać szybciej.

Mapa kodu — pokaż metody i powiązane pola

Wskazówka

Zielone wyróżnienie pokazuje ostatnie elementy, które zostały dodane do mapy. Zielona strzałka pokazuje położenie kursora w kodzie. Strzałki między elementami reprezentują różne relacje. Więcej informacji o elementach na mapie można uzyskać, przenosząc mysz nad nimi i sprawdzając etykietki narzędzi.

Mapa kodu — pokaż etykietki narzędzi

Aby wyświetlić definicję kodu dla każdego pola, kliknij dwukrotnie pole na mapie lub wybierz pole i naciśnij F12. Zielona strzałka przechodzi między elementami na mapie. Kursor w edytorze kodu również przenosi się automatycznie.

Zrzut ekranu przedstawiający okno mapy kodu z wybranym polem historii i oknem edytora kodu, w którym wyróżniono wszystkie wystąpienia historii.

Zrzut ekranu przedstawiający okno mapy kodu z wybranym polem paintObjects i oknem edytora kodu, w którym wyróżniono wszystkie wystąpienia obiektów paintObjects.

Wskazówka

Możesz również przenieść zieloną strzałkę na mapie, przenosząc kursor w edytorze kodu.

Omówienie relacji między fragmentami kodu

Teraz chcesz wiedzieć, który inny kod wchodzi w interakcję z polami history i paintObjects . Do mapy można dodać wszystkie metody odwołujące się do tych pól. Możesz to zrobić na mapie lub w edytorze kodu.

Mapa kodu — znajdowanie wszystkich odwołań

Otwieranie mapy kodu z edytora kodu

Uwaga / Notatka

Jeśli dodasz elementy z projektu, który jest współużytkowany w wielu aplikacjach, takich jak Windows Phone lub Windows Store, te elementy są zawsze wyświetlane z aktualnie aktywnym projektem aplikacji na mapie. Jeśli więc zmienisz kontekst na inny projekt aplikacji, kontekst na mapie również zmieni się dla wszystkich nowo dodanych elementów z udostępnionego projektu. Operacje wykonywane z elementem na mapie dotyczą tylko tych elementów, które współużytkują ten sam kontekst.

Zmień układ, aby zmienić rozmieszczenie przepływu relacji i ułatwić odczytywanie mapy. Możesz również przenosić elementy wokół mapy, przeciągając je.

Zrzut ekranu, który przedstawia okno mapy kodu z otwartym menu Układ i wybraną komendą Od lewej do prawej.

Wskazówka

Domyślnie układ przyrostowy jest włączony. Zmiana układu mapy jest minimalna podczas dodawania nowych elementów. Aby zmienić kolejność całej mapy za każdym razem, gdy dodasz nowe elementy, wyłącz opcję Układ przyrostowy.

Zrzut ekranu okna mapy kodu ze strzałkami relacji pomiędzy polami przebiegającymi z lewej na prawą stronę.

Przeanalizujmy te metody. Na mapie kliknij dwukrotnie metodę PaintCanvas lub wybierz tę metodę i naciśnij F12. Dowiesz się, że ta metoda tworzy history i paintObjects jako puste listy.

Zrzut ekranu przedstawiający okno mapy kodu z wybraną metodą PaintCanvas i obrazem fragmentu kodu przedstawiający wyróżnioną nazwę metody PainCanvas.

Teraz powtórz te same kroki, aby zbadać definicję clear metody. Dowiesz się, że clear wykonuje kilka zadań za pomocą poleceń paintObjects i history. Następnie wywołuje metodę Repaint .

Zrzut ekranu przedstawiający okno mapy kodu z wybraną metodą Clear i obrazem fragmentu kodu przedstawiający kod metody Clear.

Teraz sprawdź definicję addPaintObject metody. Wykonuje również niektóre zadania za pomocą poleceń history i paintObjects. Wywołuje również metodę Repaint.

Zrzut ekranu przedstawiający okno mapy kodu z wybraną metodą addPaintObject i obrazem fragmentu kodu przedstawiający kod metody addPaintObject.

Znajdź problem, sprawdzając mapę

Wygląda na to, że wszystkie metody modyfikujące history i paintObjects wywołują Repaint. Jednak metoda undo nie wywołuje Repaint, mimo że undo modyfikuje te same pola. Dlatego uważasz, że możesz rozwiązać ten problem, dzwoniąc pod Repaint z undo.

Mapa kodu — znajdowanie brakującego wywołania metody

Gdybyś nie miał mapy pokazującej brakujące wywołanie, być może byłoby trudniej znaleźć ten problem, zwłaszcza w przypadku bardziej złożonego kodu.

Podziel się swoim odkryciem i kolejnymi krokami

Zanim ty lub ktoś inny naprawi tę usterkę, możesz zanotować na mapie problem i jak go rozwiązać.

Mapa kodu — elementy komentarza i flagi na potrzeby kontynuacji

Można na przykład dodawać komentarze do mapy i flagować elementy przy użyciu kolorów.

Mapa kodu — elementy skomentowane i oznaczone flagami

Jeśli masz zainstalowany program Microsoft Outlook, możesz wysłać mapę w wiadomości e-mail do innych osób. Możesz również wyeksportować mapę jako obraz lub inny format.

Mapa kodu — udostępnianie, eksportowanie, poczta

Rozwiązać problem i pokazać, co zrobiłeś

Aby naprawić tę usterkę, należy dodać wywołanie Repaint do undo.

Mapa kodu — dodawanie brakującego wywołania metody

Aby potwierdzić poprawkę, uruchom ponownie sesję debugowania i spróbuj odtworzyć usterkę. Teraz wybranie opcji Cofnij ostatnie pociągnięcie działa zgodnie z oczekiwaniami i potwierdza, że wprowadzono prawidłową korektę.

Mapa kodu — potwierdzanie poprawki kodu

Możesz zaktualizować mapę, aby pokazać wprowadzone poprawki.

Mapa kodu — aktualizowanie mapy przy użyciu brakującego wywołania metody

Mapa teraz pokazuje łącze między cofnij a przemaluj.

Mapa kodu — zaktualizowana mapa z wywołaniem metody

Uwaga / Notatka

Po zaktualizowaniu mapy może zostać wyświetlony komunikat informujący, że indeks kodu użyty do utworzenia mapy został zaktualizowany. Oznacza to, że ktoś zmienił kod, co powoduje, że mapa nie jest zgodna z bieżącym kodem. Nie uniemożliwia to aktualizowania mapy, ale może być konieczne ponowne utworzenie mapy w celu potwierdzenia, że jest ona zgodna z kodem.

Teraz skończysz z badaniem. Pomyślnie znalazłeś i naprawiłeś problem przez mapowanie kodu. Masz również mapę, która ułatwia poruszanie się po kodzie, zapamiętanie poznanych informacji i pokazanie kroków, które wykonaliśmy w celu rozwiązania problemu.