Krok 4. Uruchamianie kodu w debugerze
Poprzedni krok: Korzystanie z interakcyjnego okna REPL
Program Visual Studio umożliwia zarządzanie projektami, rozbudowane środowisko edycji, okno Interaktywne i pełne debugowanie kodu w języku Python. W debugerze możesz uruchomić kod krok po kroku, w tym każdą iterację pętli. Można również wstrzymać program, gdy spełnione są pewne warunki. W dowolnym momencie, gdy program jest wstrzymany w debugerze, można sprawdzić cały stan programu i zmienić wartość zmiennych. Takie działania są niezbędne do śledzenia usterek programu, a także zapewniają pomoc w przypadku dokładnego przepływu programu.
Zastąp kod w pliku PythonApplication1.py następującym kodem. Ta odmiana kodu rozszerza
make_dot_string
się, aby można było zbadać jego dyskretne kroki w debugerze. Umieszcza również pętlęfor
main
w funkcji i uruchamia ją jawnie, wywołując tę funkcję:from math import cos, radians # Create a string with spaces proportional to a cosine of x in degrees def make_dot_string(x): rad = radians(x) # cos works with radians numspaces = int(20 * cos(rad) + 20) # scale to 0-40 spaces st = ' ' * numspaces + 'o' # place 'o' after the spaces return st def main(): for i in range(0, 1800, 12): s = make_dot_string(i) print(s) main()
Sprawdź, czy kod działa prawidłowo, naciskając klawisz F5 lub wybierając polecenie menu Debuguj>rozpocznij debugowanie. To polecenie uruchamia kod w debugerze. Od tej pory nic nie zostało zrobione, aby wstrzymać program podczas jego działania, po prostu wyświetli wzorzec fali dla kilku iteracji. Naciśnij dowolny klawisz, aby zamknąć okno danych wyjściowych.
Napiwek
Aby zamknąć okno danych wyjściowych automatycznie po zakończeniu działania programu, wybierz polecenie menu Narzędzia>Opcje, rozwiń węzeł Języka Python, wybierz pozycję Debugowanie, a następnie wyczyść opcję Poczekaj na dane wejściowe, gdy proces zakończy się normalnie:
Aby uzyskać więcej informacji na temat debugowania i sposobu ustawiania argumentów skryptu i interpretera, zobacz Debugowanie kodu języka Python.
Ustaw punkt przerwania w
for
instrukcji, klikając raz na szarym marginesie przez ten wiersz lub umieszczając daszek w tym wierszu i używając polecenia Debuguj>przełącz punkt przerwania (F9). Czerwona kropka pojawia się na szarym marginesie, aby wskazać punkt przerwania (jak zauważyła strzałka poniżej):Uruchom ponownie debuger (F5) i sprawdź, czy uruchamianie kodu zatrzymuje się w wierszu z tym punktem przerwania. W tym miejscu możesz sprawdzić stos wywołań i sprawdzić zmienne. Zmienne, które są w zakresie, są wyświetlane w oknie Automatyczne po zdefiniowaniu. Możesz również przełączyć się do widoku Ustawienia lokalne w dolnej części tego okna, aby wyświetlić wszystkie zmienne znalezione w bieżącym zakresie (w tym funkcje), nawet przed ich zdefiniowaniem:
Obserwuj pasek narzędzi debugowania (pokazany poniżej) u góry okna programu Visual Studio. Ten pasek narzędzi zapewnia szybki dostęp do najczęściej używanych poleceń debugowania (które można również znaleźć w menu Debugowanie ):
Przyciski od lewej do prawej w następujący sposób:
Przycisk Polecenie Kontynuuj (F5) Uruchamia program do następnego punktu przerwania lub do momentu ukończenia programu. Przerwij wszystko (Ctrl+Alt+Break) Wstrzymuje długotrwały program. Zatrzymaj debugowanie (Shift+F5) Zatrzymuje program wszędzie tam, gdzie jest, i zamyka debuger. Uruchom ponownie (Ctrl+Shift+F5) Zatrzymuje program wszędzie tam, gdzie jest, i uruchamia go ponownie od początku w debugerze. Pokaż następną instrukcję (Alt+Num)* Przełącza się do następnego wiersza kodu do uruchomienia. Jest to przydatne w przypadku poruszania się po kodzie podczas sesji debugowania i szybkiego powrotu do punktu wstrzymania debugera. Przechodzenie do (F11) Uruchamia następny wiersz kodu, wprowadzając w wywoływane funkcje. Krok do kroku (F10) Uruchamia następny wiersz kodu bez wprowadzania w wywoływanych funkcjach. Wyjście (Shift+F11) Uruchamia pozostałą część bieżącej funkcji i wstrzymuje kod wywołujący. Aby przejść do instrukcji, użyj instrukcji
for
Step Over. Krok oznacza , że debuger uruchamia bieżący wiersz kodu, w tym wszystkie wywołania funkcji, a następnie natychmiast wstrzymuje się ponownie. Zwróć uwagę, że w kodzie zmiennai
jest teraz definiowana w oknach Ustawienia lokalne i Automatyczne .Przejdź do następnego wiersza kodu, który wywołuje
make_dot_string
i wstrzymuje. Krok w tym miejscu oznacza, że debuger uruchamia całymake_dot_string
element i wstrzymuje się po powrocie. Debuger nie zatrzymuje się wewnątrz tej funkcji, chyba że istnieje tam oddzielny punkt przerwania.Kontynuuj przechodzenie przez kod jeszcze kilka razy i obserwuj zmianę wartości w oknie Ustawienia lokalne lub Automatyczne .
W oknie Ustawienia lokalne lub Automatyczne kliknij dwukrotnie kolumnę Wartość dla
i
zmiennych lubs
, aby edytować wartość. Naciśnij klawisz Enter lub wybierz dowolny obszar poza tę wartość, aby zastosować wszelkie zmiany.Kontynuuj przechodzenie przez kod przy użyciu instrukcji Krok do. Krok do oznacza, że debuger wprowadza wewnątrz dowolnego wywołania funkcji, dla którego ma informacje debugowania, takie jak
make_dot_string
. Po przejściu do wewnątrzmake_dot_string
możesz zbadać jego zmienne lokalne i przejść przez jego kod specjalnie.Kontynuuj krok krok do kroku i zwróć uwagę, że gdy osiągniesz koniec
make_dot_string
, następny krok powróci dofor
pętli z nową wartością zwracaną w zmiennejs
. Po ponownym kroku do instrukcjiprint
zwróć uwagę, że funkcja Step Intoprint
nie wchodzi w tę funkcję. Jest to spowodowane tym, żeprint
nie jest napisany w języku Python, ale jest raczej natywnym kodem wewnątrz środowiska uruchomieniowego języka Python.Kontynuuj korzystanie z kroków do momentu ponownego przejścia do elementu
make_dot_string
. Następnie użyj polecenia Step Out i zwróć uwagę, że powrócisz dofor
pętli. W przypadku funkcji Step Out debuger uruchamia pozostałą część funkcji, a następnie automatycznie wstrzymuje kod wywołujący. Jest to przydatne w przypadku przejścia przez część długiej funkcji, którą chcesz debugować. Przejdzie przez resztę i nie ustawi jawnego punktu przerwania w kodzie wywołującym.Aby kontynuować uruchamianie programu do momentu osiągnięcia następnego punktu przerwania, użyj pozycji Kontynuuj (F5). Ponieważ w
for
pętli istnieje punkt przerwania, należy przerwać w następnej iteracji.Przechodzenie przez setki iteracji pętli może być żmudne, więc program Visual Studio umożliwia dodanie warunku do punktu przerwania. Debuger następnie wstrzymuje program w punkcie przerwania tylko wtedy, gdy warunek zostanie spełniony. Można na przykład użyć warunku z punktem przerwania w
for
instrukcji , aby wstrzymać go tylko wtedy, gdy wartośći
przekracza 1600. Aby ustawić warunek, kliknij prawym przyciskiem myszy czerwoną kropkę punktu przerwania i wybierz pozycję Warunki (Alt+F9>C). W wyświetlonym oknie podręcznym Punkt przerwania Ustawienia wprowadźi > 1600
jako wyrażenie i wybierz pozycję Zamknij. Naciśnij klawisz F5 , aby kontynuować i obserwować, że program uruchamia wiele iteracji przed następną przerwą.Aby uruchomić program do ukończenia, wyłącz punkt przerwania, klikając prawym przyciskiem myszy kropkę na marginesie i wybierając polecenie Wyłącz punkt przerwania (Ctrl+F9). Następnie wybierz pozycję Kontynuuj (lub naciśnij klawisz F5), aby uruchomić program. Po zakończeniu programu program Visual Studio zatrzymuje sesję debugowania i wraca do trybu edycji. Możesz również usunąć punkt przerwania, wybierając jego kropkę lub klikając prawym przyciskiem myszy kropkę i wybierając pozycję Usuń punkt przerwania. Spowoduje to również usunięcie wszystkich wcześniej ustawionych warunków.
Napiwek
W niektórych sytuacjach, takich jak niepowodzenie uruchomienia interpretera języka Python, okno danych wyjściowych może pojawić się tylko na krótko, a następnie zamknąć automatycznie bez możliwości wyświetlenia komunikatów o błędach. Jeśli tak się stanie, kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań, wybierz pozycję Właściwości, wybierz kartę Debugowanie, a następnie dodaj -i
do pola Argumenty interpretera. Ten argument powoduje przejście interpretera do trybu interaktywnego po zakończeniu programu, dzięki czemu okno jest otwarte, dopóki nie wprowadzisz klawiszy Ctrl+Z>Enter, aby zakończyć działanie.
Następny krok
Głębiej
- Debugowanie
- Debugowanie w programie Visual Studio zawiera pełną dokumentację funkcji debugowania programu Visual Studio.