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".
Dodatkowo jeszcze nad oknem głównym mamy przycisk z nazwą naszego projektu i wystarczy go kliknąć i aplikacja zostanie uruchomiona w trybie debug.
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.
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.
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ę.
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.
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".
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.
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.
Czyli klikamy teraz F5 i teraz używamy skrótu F10, żeby przejść do kolejnej linii.
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.
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.
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.
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.
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.
Także tutaj przechodzimy, widzimy, że zostały przekazane prawidłowe dane, więc zobaczmy co dalej się dzieje z tymi wartościami.
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.
I tak samo mamy tutaj okno "watch" i tutaj możemy sobie dodać również dowolną zmienną, którą chcemy śledzić.
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.
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.
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)