Blog Dla Młodszych Programistów C#/.NET

wtorek, 9 marca 2021
Musisz wiedzieć, że programista w swojej pracy oprócz tego, że pisze kod, to również bardzo często musi szukać błędów w różnych aplikacjach. Oczywiście są różne błędy, różne sposoby znajdowania tych błędów oraz zabezpieczenia przed takimi błędami. Jednak najczęściej, aby szybko znaleźć i zdiagnozować błąd, musisz umieć debugować swoje aplikacje poprzez visual studio. W swojej pracy codziennie będziesz debugował kod, dlatego wypadałoby to umieć robić poprawnie. W dzisiejszym artykule pokażę Ci właśnie jak podejść do tego tematu. Pokaże przede wszystkim, czym jest debugowanie, jak powinieneś to robić i jakie są dobre oraz bardziej zaawansowane techniki debugowania kodu.

Jak znaleźć błąd w kodzie - debugowanie kodu

Najlepiej uczyć się od razu na praktyce, dlatego uruchom proszę aplikację napisaną w C# w visual studio. Może to być aplikacja, którą pisaliśmy kilka tygodni temu, czyli pierwsza aplikacja w C# – Kalkulator.

Mamy tutaj kod naszej aplikacji, a konkretnie jest to prosty kalkulator napisany jako aplikacja konsolowa. Ten kod możemy uruchomić na dwa sposoby, poprzez CTRL+F5 bez debugowania oraz przez samo F5 i wtedy aplikacja zostanie uruchomiona w trybie debug. To samo możemy zrobić bez skrótów, wystarczy w menu kliknąć debug, a następnie "start debugging" albo "start without debugging".

Debugowanie kodu menu start

Dodatkowo jeszcze nad oknem głównym mamy przycisk z nazwą naszego projektu i wystarczy go kliknąć i aplikacja zostanie uruchomiona w trybie debug.

Debugowanie kodu menu start

Jeżeli chcemy debugować kod, to kluczowe jest używanie tak zwanych breakpoint’ów, dzięki którym możemy zatrzymać naszą aplikację w dowolnym miejscu. Aby dodać breakpoint’a, możesz przejść do konkretnej linii i kliknąć F9 lub z lewej strony na szary obszar i wtedy cała linia zostaje oznaczona na czerwono, a z lewej strony pojawi się taki czerwony punkt.

Debugowanie kodu breakpoint

Jeżeli teraz uruchomię aplikację z debugowaniem, czyli na F5, to aplikacja zatrzyma się na tym naszym pierwszym breakpoincie, czyli w naszym przypadku na linii 9.

Debugowanie kodu stop breakpoint

Zatrzymałem się na tym breakpoincie i teraz, jeżeli kliknę F5, to aplikacja zatrzyma się dopiero na tym kolejnym breakpoincie, chyba że tak jak w tym przypadku tutaj w konsoli musimy najpierw zrobić jakąś inną operację.

Debugowanie kodu stop oczekiwanie

Po wpisaniu liczby, jeżeli w aplikacji będzie kolejny breakpoint, to znowu aplikacji zostanie na nim zatrzymana. Także tutaj poprzez F5 po prostu przeskakujemy do kolejnych breakpointów (jeżeli takie są). Jeżeli chcemy zakończyć debugowanie, to musimy zamknąć aplikację, albo użyć skrótu SHIFT+F5, albo ewentualnie kliknąć ten czerwony przycisk.

Debugowanie kodu menu stop

Czyli to jest najprostsze używanie debugera, tzn. dodajesz breakpoint i poprzez F5 przeskakujesz sobie pomiędzy kolejnymi breakpointami.

Breakpointami również możesz zarządzać na dedykowanym oknie o nazwie "breakpoints".

Debugowanie kodu breakpoint widok

Jeżeli nie jest on u Ciebie widoczny tutaj na dole ekranu, to musisz kliknąć znowu na górze w "debug" następnie "windows" i "breakpoints" albo użyć tego skrótu CTRL+ALT+B. To okno powinno się u Ciebie pojawić na dole, pod głównym oknem. I tutaj możemy również podejrzeć albo tutaj nawet zablokować czy usunąć nasze breakpointy.

Załóżmy, że teraz mamy jakiś błąd w naszej aplikacji. Powiedzmy, że np. w metodzie Calculate zmienię przy dodawaniu ten plus na minus.

Debugowanie kodu błąd

Następnie uruchomię aplikację i wpiszę jakieś przykładowe liczby. Niech to będzie np. 10 + 5. I widzę, że nie wyświetliło się 15, ale 5. Tzn. że mamy jakiś błąd w naszej aplikacji dlatego musimy go teraz znaleźć . W tym celu możemy sobie ustawić np. na początku 1 breakpoint’a i będziemy analizować po kolei cały kod.

Debugowanie kodu szukanie błędu

Czyli klikamy teraz F5 i teraz używamy skrótu F10, żeby przejść do kolejnej linii.

Debugowanie kodu błąd 2

Tutaj zostajemy poproszeni o wpisanie liczby, także wpiszmy w konsoli również 10, także tutaj jest wszystko ok. Tutaj możemy sobie w tym miejscu podejrzeć, że faktycznie wartość naszej zmiennej number1 to jest 10.

Debugowanie kodu błąd 3

Przechodzimy do kolejnej linii i teraz znowu będzie pobieranie działania, które chcemy wykonać. Damy tutaj "+". Klikamy F10 i przechodzimy do kolejnej linii, tutaj znowu będzie pobranie liczby, wpiszemy 5. I teraz sobie podejrzymy wartość zmiennej number2, mamy 5, czyli wszystko do tej pory jest ok.

Debugowanie kodu błąd 4

I teraz przechodzimy do naszej metody Calculate, klikamy F10 i tutaj widzimy, że jest zły wynik – mamy tutaj wynik 5, a w tym miejscu powinien być wynik 15.

Debugowanie kodu błąd 5

Dlatego wygląda na to, że tutaj gdzieś jest błąd w tej metodzie. Zobacz, że z lewej strony mamy taką żółtą strzałkę. Możemy ją przesunąć z powrotem do tej linii, gdzie wywoływana jest metoda Calculate.

Debugowanie kodu błąd 6

I jeżeli jesteśmy na tej linii, wystarczy, że jeżeli teraz użyjemy skrótu F11, to przejdziemy wewnątrz tej metody, a wiemy, że wewnątrz tej metody jest błąd.

Debugowanie kodu błąd 7

Także tutaj przechodzimy, widzimy, że zostały przekazane prawidłowe dane, więc zobaczmy co dalej się dzieje z tymi wartościami.

Debugowanie kodu błąd 8

Po krótkiej analizie możemy znaleźć błąd (który wcześniej tutaj wstawiliśmy). Widać, że wewnątrz switch’a zamiast dodawania jest odejmowanie przekazanych w parametrze liczb. Także udało nam się zlokalizować w tym momencie błąd. Wiemy gdzie mamy błąd, więc możemy już teraz zamknąć naszą aplikację. Dzięki debugowaniu ten błąd udało się dość łatwo zlokalizować. Wiadomo, że nie był to jakiś skomplikowany przykład, ale właśnie w ten sposób powinieneś używać debugera.

Oprócz tego, do debugowania są przydatne dwa okna. Okno "locals"oraz okno "watch". One będą widoczne po uruchomieniu aplikacji w trybie debug, także uruchom proszę jeszcze raz aplikację. Podamy liczby, niech to będzie znowu 10 + 5 i przejdziemy do naszej metody Calculate. Możemy się tutaj zatrzymać. Teraz zobacz, na dole jest okno "locals" i tutaj widzimy wartości wszystkich lokalnych zmiennych, czyli od razu widzimy wartość zmiennej number1, number2 i operation, tutaj są wszystkie te wartości. Nie musimy najeżdżać myszką na te zmienne, ale od razu wszystkie wartości tych zmiennych widzimy w tym miejscu.

Debugowanie kodu widok locals

I tak samo mamy tutaj okno "watch" i tutaj możemy sobie dodać również dowolną zmienną, którą chcemy śledzić.

Debugowanie kodu widok watch

Możemy tutaj np. wpisać number1. Możemy też tutaj wpisać od razu jakieś działanie i zostanie wyświetlony w tym miejscu wynik. I tutaj jest ten wynik wyświetlony. Również tutaj mogę sobie wyświetlić zmienną, która nie jest wewnątrz tej metody. Tylko akurat w tym miejscu pokazuje nam błąd, ale oczywiście to możemy dalej śledzić. Jeżeli wyjdziemy z tej metody do metody main, czyli miejsca, w którym jest zmienna result, to zobacz, że tutaj już się pojawiła wartość 5.

Debugowanie kodu widok watch

Jeżeli te 2 okna "locals" lub "watch" nie będą u Ciebie widoczne, to w menu głównym musisz kliknąć w zakładke "debug", a następnie "windows" - i tam będze okno locals i okno watch (są widoczne tylko w trybie debug). Takich okien możemy mieć w jednym momencie otwartych więcej.

Z takich ciekawych rzeczy, jeżeli teraz wartość którejś z tych zmiennych się zmieni, to będzie ona na czerwono.

Debugowanie kodu widok watch



PODSUMOWANIE


Jak widzisz, mechanizm debugowania nie jest skomplikowany. Wystarczy poznać kilka podstawowych metod, dzięki którym będzie Ci dużo łatwiej i szybciej znaleźć błąd w aplikacji. Jest to bardzo pomocny mechanizm, ma ogromne możliwości i bez którego diagnozowanie błędów byłoby bardzo ciężkie. Warto dobrze opanować debugowanie, bo tak jak wspomniałem wcześniej, będziesz go używał wiele razy każdego dnia w swojej pracy.

Poprzedni artykuł - Jak Zostać Programistą .NET - Szkolenie Online Zostań Programistą .NET.
Następny artykuł - Pierwsza Aplikacja Desktopowa Windows Forms w C# – UI (1/2)
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
CTO & Founder - FindSolution.pl
Programista C#/.NET. Specjalizuje się w Blazor, ASP.NET Core, ASP.NET MVC, ASP.NET Web API, WPF oraz Windows Forms.
Autor bloga ModestProgrammer.pl
Dodaj komentarz

Wyszukiwarka

© Copyright 2024 modestprogrammer.pl. Wszelkie prawa zastrzeżone. Regulamin. Polityka prywatności. Design by Kazimierz Szpin