Blog (7)
Komentarze (49)
Recenzje (0)

Początki debugowania...

@jullo89Początki debugowania...01.02.2012 22:33

Dzisiaj będzie troszkę o debugowaniu w NetBeans.

Trochę torii na początek. Debugowaniem nazywamy proces śledzenia wykonywania programu, inaczej mówiąc kontrolowanie i sprawdzanie wykonania programu. Jeszcze prościej?! Śledzenie wykonywania programu krok po kroku, linijka po linijce, instrukcja po instrukcji, sprawdzając przy tym stan obiektów, zmiennych etc. - jaśniej już nie potrafię ;] Celem debugowania jest rozpoznanie błędu w programie, znalezienie miejsca i przyczyny, a następnie usunięcie go. Na końcu znowu należałoby przetestować, czy wyeliminowano błąd i czy nie wytworzyło się nowego(czasami się zdarza ;)). Czyni się to przy użyciu debuggera.

Co to jest debugger? Jest to nic innego jak program komputerowy służący do analizy innych programów (przynajmniej tak twierdzi wiki ), w celu znalezienia i wyeliminowania błędów. Program ten sprawuje kontrolę nad wykonaniem kodu tworzonego przez nas programu. Pozwala na śledzenie obiektów, atrybutów i kontrolowanie wykonania programu( tak jak odtwarzacz muzyczny :P „Play”, „Pause”, „Stop” itp. - przynajmniej taki debugger znam w NetBeans).

Kiedy stosujemy debugowanie? Ja stosuje wtedy, gdy stwierdzę, że program działa niepoprawnie i nie wiem co jest przyczyną. Co debuguję? - zazwyczaj jedynie podejrzane fragmenty programu (nie ma sensu debugowania całego programu, skoro błąd występuje w pewnej funkcji -funkcjonalności). Co sprawdzam? - stan obiektów, atrybutów, referencje do obiektów oraz jak się zmieniają i wypatruję miejsca, w którym obiekt (atrybut) lub referencja przyjmuje niepoprawną stan lub wartość. Kiedy najtrudniej znaleźć błąd – osobiście najtrudniej mi znaleźć błąd jeżeli jest on banalny, mały a wywołuje dużą zmianę w działaniu. Także, gdy program współdziała z innymi programami, wymienia dane itp., oraz w programach współbieżnych i rozproszonych – hardcore!!

Ok. Teraz pora uruchomić NetBeans ;] Gdy już uruchomimy, należy utworzyć nowy projekt, żeby móc na czymś przedstawić sposób debugowania. Wybieramy aplikacje konsolową. Nasz prosty przykład ma za zadanie wypisać z tablicy elementy będące liczbami parzystymi. A więc tworzymy program tak jak to zostało pokazane na rysunku poniżej.

Program z błędem
Program z błędem

Jak widać program zawiera błąd i się zawiesza ;] Nie popisałem się inwencją twórczą, ale to jest przykład i ma pokazać jak się debuguje :P ;]

A więc w miejscu gdzie podejrzewamy, że występuje „bug” zastawiamy pułapki – klikamy lewym przyciskiem myszy na nr linijki( zaprezentowano na rysunku poniżej), a linijka zostaje oznaczona kolorem różowym (nie będę się spierał czy jest to łososiowy czy też brzoskwiniowy).

Zastawianie pułapki
Zastawianie pułapki

W oznaczonych w ten sposób miejscach (nazywanych pułapkami) program zatrzyma się.

Śledzenie obiektów, atrybutów, zmiennych!! Aby śledzić stan obiektów i atrybutów trzeba zaznaczyć nazwę atrybutu lub obiektu, kliknąć prawym klawiszem i z menu konteksowego wybrać „New watch” lub użyć skrótu klawiaturowego Ctrl+Shift+F7.

Dodawanie do obserwacji
Dodawanie do obserwacji

Wyświetli nam się okno, w którym wprowadzamy nazwę.

Nadawanie nazwy
Nadawanie nazwy

Po zatwierdzeniu otworzy nam się nowy panel o nazwie „Variables”, w którym będziemy śledzić stan naszej zmiennej „i”.

Obserwowane
Obserwowane

No to pora odpalać debugowanie. Służy do tego przycisk pokazany na poniższym zrzucie lub skrót Ctrl+F5.

Rozpoczęcie debugowania
Rozpoczęcie debugowania

Program zatrzymał się przed wykonaniem pierwszego cyklu pętli while, a nasza zmienna i ma wartość 0 (pokazane na zrzucie poniżej). a więc teraz wykorzystamy przycisk przejścia do następnej pułapki (o ile jest ona zastawiona – u nas jest w linijce 23). Służy do tego przycisk „Play” :P koloru zielonego. Po jego naciśnięciu zatrzymamy się przed instrukcją zwiększającą wartość i o jeden. Do wykonywania kodu mamy kilka możliwości. Możemy wykonać jedną instrukcję, jedną linijkę programu, ale możemy również wejść do kodu metody i wykonywać jej instrukcje, powrócić z kodu metody, do programu lub przejść do linijki w której umieszczony jest kursor.

Debugowanie
Debugowanie

Poniżej przedstawiono przyciski:

Przyciski służące do sterowania debugowaniem
Przyciski służące do sterowania debugowaniem

1 – „Finish” (Shift+F5)- zatrzymanie procesu debugowania; 2 – „Pause” - przerwa w procesie debugowania, np. podczas wykonywania długich pętli lub operacji; 3 – „Continue”(F5) - wykonanie do następnej pułapki lub zakończenia się programu; 4 - „Step Over” (F8)- wykonanie następnej instrukcji; 5 - „Step Over Expression” (Shift+F8)- wykonanie następnej instrukcji po wyrażeniu; 6 - „Step Into” (F7)- wejście do metody; 7 - „Step Out” (Ctrl+F7)- wyjście z metody; 8 – „Run To Cursor” (F4)- przejście do linijki, gdzie umieszczony jest kursor.

Tyle nam wystarczy, aby mieć kontrolę nad wykonaniem programu i mieć możliwość śledzenia zmian w programie. Przycisk 6, 7 można przetestować na metodzie „println”. Akcja związana z przycikiem 8 działa jedynie jeżeli kursor jest umieszczony w linijce, która ma się wykonać (raczej nie da się zmienić biegu wykonania programu tymi przyciskami, aczkolwiek możemy panować nad czasem ;).

Podczas debugowania możemy również dodawać do obserwowanych nowe obiekty i sprawdzać ich stan.

Śledząc wykonanie programu widzimy, że instrukcja „i++;” wykona się tylko raz, i będzie miało wartość 1, a pętla się nie skończy. Należy usunąć blok „else{}”, a instrukcję inkrementacji przenieść do bloku pętli.

Podczas debugowania możemy sprawdzać o wiele więcej niż przedstawiony tutaj przykład. Są to między innymi stos wywołań, śledzić wykonanie wątków, sesje, załadowane klasy...

Zmienne
Zmienne
Stos wywołań
Stos wywołań
Wątki
Wątki
Sesje
Sesje
Załadowane klasy
Załadowane klasy

Polecam również stworzyć jakiś przykład z wątkami, w których zachodzi synchronizacja.

Uważam, że najlepszą metodą nauki jest uczenie się na błędach :P i debugowanie ;], zatem uczcie się, na większych i mniejszych projektach...

Jakość przede wszystkim ;]

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.