Informacje o debugerze .NET w programie Visual Studio Code
W poprzedniej lekcji pokazano, że debuger pomaga kontrolować wykonywanie programu i obserwować jego stan. W tej sekcji dowiesz się, jak wykonać oba te zadania w programie Visual Studio Code.
Zacznijmy od informacji na temat sposobu konfigurowania debugera programu Visual Studio Code do używania go w środowisku .NET.
Konfigurowanie programu Visual Studio Code na potrzeby debugowania platformy .NET
Po pierwszym otwarciu pliku z kodem C# w programie Visual Studio Code zostanie wyświetlony monit o zainstalowanie zalecanych rozszerzeń dla języka C#.
Program Visual Studio Code zainstaluje rozszerzenie dla języka C# i wyświetli kolejny monit o dodanie wymaganych elementów zawartości na potrzeby kompilowania i debugowania projektu.
Uwaga
Obsługa języka C# w programie Visual Studio Code to opcjonalna instalacja z witryny Marketplace. Program Visual Studio Code automatycznie wyświetla monit o zainstalowanie tego rozszerzenia po otwarciu pliku języka C#, jeśli jeszcze tego nie zrobiono. Jeśli masz problemy z kompilowaniem lub debugowaniem aplikacji .NET w programie Visual Studio Code, sprawdź, czy projekt ma zasoby wymagane do obsługi języka C#.
Punkty przerwania
Jak pokazano w poprzedniej lekcji, debuger pomaga analizować i kontrolować wykonywanie programu. Debuger programu Visual Studio Code rozpoczyna on wykonywanie kodu natychmiast po uruchomieniu. Ponieważ kod jest wykonywany szybko, musisz mieć możliwość wstrzymania programu na poziomie dowolnej instrukcji. W tym celu możesz użyć punktów przerwania.
Punkt przerwania można dodać w programie Visual Studio Code, klikając lewą stronę numeru wiersza w wierszu, który chcesz przerwać. Gdy punkt przerwania zostanie włączony, powinno być widoczne czerwone kółko. Aby go usunąć, wybierz ponownie czerwone kółko.
Jeśli klikniesz prawym przyciskiem myszy, aby dodać punkt przerwania, możesz również wybrać opcję Dodaj warunkowy punkt przerwania. Ten specjalny rodzaj punktu przerwania umożliwia wprowadzenie warunku wykonywania przerwania. Ten punkt przerwania będzie aktywny tylko w przypadku spełnienia określonego warunku. Możesz również zmodyfikować istniejący punkt przerwania, klikając go prawym przyciskiem myszy i wybierając polecenie Edytuj punkt przerwania.
Omówienie debugera programu Visual Studio Code
Po skonfigurowaniu punktów przerwania i uruchomieniu aplikacji na ekranie pojawią się nowe panele informacji i kontrolki.
- Kontrolki uruchamiania debugera
- Stan zmiennych
- Stan obserwowanych zmiennych
- Bieżący stos wywołań
- Punkty przerwania
- Kontrolki wykonywania
- Bieżący krok wykonania
- Konsola debugowania
Kontrolki uruchamiania debugera
W górnej części paska bocznego znajdują się kontrolki uruchamiania:
- Uruchom debugowanie.
- Wybierz aktywną konfigurację uruchamiania.
- Edytuj plik
launch.json
. Utwórz go w razie potrzeby. - Otwórz terminal debugowania.
Wyświetlanie i edytowanie stanu zmiennych
Podczas analizowania przyczyny wady programu sprawdź stan zmiennych, aby wyszukać nieoczekiwane zmiany. W tym celu można użyć panelu Zmienne.
Zmienne są uporządkowane według zakresu:
- Zmienne lokalne są dostępne w bieżącym zakresie, zazwyczaj w bieżącej funkcji.
- Zmienne globalne są dostępne z każdego miejsca w programie. Obejmuje to również obiekty systemowe ze środowiska uruchomieniowego JavaScript, więc nie zdziw się, jeśli w tym miejscu zobaczysz wiele elementów.
- Zmienne zamknięcia są dostępne z bieżącego zamknięcia, o ile istnieją. Zamknięcie łączy lokalny zakres funkcji z zakresem funkcji zewnętrznej, do której należy.
Zakresy i zmienne można rozwijać, wybierając strzałkę. Po rozwinięciu obiektów można zobaczyć wszystkie właściwości zdefiniowane w obiekcie.
Można zmienić wartość zmiennej na bieżąco, klikając dwukrotnie zmienną.
Po umieszczeniu wskaźnika myszy na parametrze funkcji lub zmiennej bezpośrednio w oknie edytora można również zajrzeć do jego wartości.
Obserwowanie zmiennych
Wyszukiwanie stanu zmiennej za każdym razem, gdy chcesz śledzić go w czasie lub w różnych funkcjach, może być żmudne. Tu przydaje się panel Śledzenie.
Możesz wybrać przycisk Plus, aby wprowadzić nazwę zmiennej lub wyrażenie do obejrzenia. Alternatywnie możesz kliknąć prawym przyciskiem myszy zmienną w panelu Zmienne i wybrać pozycję Dodaj do śledzenia.
Wszystkie wyrażenia w panelu zegarka są aktualizowane automatycznie w miarę uruchamiania kodu.
Stos wywołań
Za każdym razem, gdy program wywołuje funkcję, do stosu wywołań jest dodawany wpis. Gdy aplikacja staje się złożona i funkcje są wielokrotnie wywoływane w obrębie innych funkcji, stos wywołań reprezentuje ślad wywołań funkcji.
Przydaje się to podczas szukania źródła wyjątku. Jeśli w programie wystąpi nieoczekiwana awaria, w konsoli często jest widoczne coś takiego, co widać na poniższym przykładzie:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9
Grupa wierszy at [...]
poniżej komunikatu o błędzie jest nazywana śladem stosu. Ślad stosu zawiera nazwę i źródło każdej funkcji, która została wywołana przed zakończeniem z wyjątkiem. Może to być nieco trudne do odszyfrowania, ponieważ obejmuje również funkcje wewnętrzne ze środowiska uruchomieniowego platformy .NET.
Tutaj przydaje się panel Stos wywołań programu Visual Studio Code. Odfiltrowuje on niechciane informacje, aby pokazać tylko istotne funkcje z Twojego własnego kodu. Dzięki temu możesz rozwinąć stos wywołań, aby dowiedzieć się, jakie jest źródło wyjątku.
Panel punktów przerwania
W panelu Punkty przerwania można wyświetlać i przełączać wszystkie punkty przerwania umieszczone w kodzie. Można także przełączać opcje, aby przerywać na przechwyconych lub nieprzechwyconych wyjątkach. Korzystając z panelu Punkty przerwania, możesz zbadać stan programu i prześledzić źródło wyjątku, gdy taki wystąpi, przy użyciu panelu Stos wywołań.
Kontrolowanie wykonywania
Możesz kontrolować przepływ wykonywania programu przy użyciu następujących kontrolek.
Od lewej do prawej kontrolki są następujące:
- Kontynuuj lub wstrzymaj wykonywanie: jeśli wykonanie zostanie wstrzymane, będzie kontynuowane do momentu osiągnięcia następnego punktu przerwania. Jeśli program jest uruchomiony, przycisk zamienia się na przycisk wstrzymania, przy użyciu którego można wstrzymać wykonywanie.
- Krok po kroku: wykonuje następną instrukcję kodu w bieżącym kontekście.
- Krok do: Podobnie jak w kroku, ale jeśli następna instrukcja jest wywołaniem funkcji, przejdź do pierwszej instrukcji kodu tej funkcji (tak samo jak
step
polecenie). - Wyjdź: jeśli jesteś wewnątrz funkcji, wykonaj pozostały kod tej funkcji i wróć do instrukcji po początkowym wywołaniu funkcji (tak samo jak
out
polecenie). - Uruchom ponownie: uruchom ponownie program od początku.
- Zatrzymaj: zakończ wykonywanie i zamknij debuger.
Korzystanie z konsoli debugowania
Konsolę debugowania można pokazać lub ukryć, wybierając klawisze Ctrl+Shift+Y dla systemów Windows i Linux. Na komputerach Mac należy nacisnąć klawisze Cmd+Shift+Y. Konsolę debugowania można użyć do wizualizacji dzienników konsoli aplikacji. Można go również użyć do oceny wyrażeń lub wykonywania kodu w bieżącej zawartości wykonywania, takich jak polecenia lub nazwy zmiennych we wbudowanym debugerze platformy .NET.
Możesz wprowadzić wyrażenie .NET w polu wejściowym w dolnej części konsoli debugowania, a następnie wybrać klawisz Enter , aby go ocenić. Wynik zostanie wyświetlony bezpośrednio w konsoli.
Korzystając z konsoli debugowania, możesz szybko sprawdzić wartość zmiennej, przetestować funkcję z różnymi wartościami lub zmienić bieżący stan.
Uwaga
Chociaż konsola debugowania jest bardzo przydatna do wykonywania i oceniania kodu platformy .NET, może to być nieco mylące, gdy próbujesz wykonać lub debugować aplikację konsolową platformy .NET, ponieważ konsola debugowania nie akceptuje danych wejściowych terminalu dla uruchomionego programu.
Aby obsługiwać dane wejściowe terminalu podczas debugowania, można użyć terminalu zintegrowanego (jednego z okien programu Visual Studio Code) lub terminalu zewnętrznego. W tym samouczku użyjesz zintegrowanego terminalu.
Otwórz plik .vscode/launch.json.
Zmień ustawienie
console
naintegratedTerminal
z:"console": "internalConsole",
Do:
"console": "integratedTerminal",
Zapisz zmiany.
W następnej lekcji dowiesz się, jak naprawić usterkę w przedstawionym wcześniej kodzie Fibonacciego, korzystając z debugera.