JavaRush /Blog Java /Random-PL /Debugowanie w Intellij IDEA: przewodnik dla początkującyc...
Roman Beekeeper
Poziom 35

Debugowanie w Intellij IDEA: przewodnik dla początkujących

Opublikowano w grupie Random-PL
Witam wszystkich, społeczność JavaRush. Dzisiaj porozmawiamy o debugowaniu: co to jest i jak debugować w Intellij IDEA. Debugowanie w Intellij IDEA: przewodnik dla początkujących - 1Artykuł przeznaczony jest dla osób, które posiadają już minimalną wiedzę na temat Java Core. Nie będzie żadnych ram ani skomplikowanych procesów publikowania bibliotek. Łatwy spacer. Zatem usiądź wygodnie i zaczynajmy!

Dlaczego potrzebujesz debugowania?

Wyjaśnijmy od razu: nie ma kodu bez błędów... Tak działa życie. Dlatego nie powinniśmy od razu popadać w bezwładność i rezygnować ze wszystkiego, jeśli kod nie działa tak, jak tego oczekiwaliśmy. Debugowanie w Intellij IDEA: przewodnik dla początkujących - 2Ale co robić? Oczywiście możesz instruować, System.out.printlngdzie tylko jest to możliwe, a następnie przeglądać dane wyjściowe w terminalu w nadziei, że uda ci się znaleźć błąd. A jednak jest to możliwe… i oni to robią, i robią to ostrożnie, stosując logowanie (przeczytasz o tym tutaj ). Jeśli jednak możliwe jest uruchomienie kodu na komputerze lokalnym, lepiej użyć Debug . Od razu zaznaczam, że w tym artykule rozważymy debugowanie projektu wewnątrz Intellij IDEA. Jeśli jesteś zainteresowany przeczytaniem o zdalnym debugowaniu, oto artykuł z naszego zasobu .

Co to jest debugowanie

Debugowanie w Intellij IDEA: przewodnik dla początkujących - 3Debugowanie to proces debugowania (sprawdzania) kodu, podczas którego w trakcie jego wykonywania można zatrzymać się w wyznaczonym miejscu i obserwować postęp wykonania. Zrozum stan programu w określonym miejscu. To dokładnie tak samo, jakbyś mógł zatrzymać życie i spojrzeć na wszystko z zewnątrz. Fajnie, prawda? Naszym celem jest szybkie i łatwe nauczenie się debugowania aplikacji przy użyciu naszego ulubionego środowiska programistycznego Intellij IDEA.

Czego potrzebujesz, aby rozpocząć debugowanie

Udzielam darmowej porady: podczas czytania artykułu zrób wszystko, co zostanie tutaj opisane, na szczęście jest na to wszystko. Czego potrzebujesz:
  1. Środowisko programistyczne Intellij IDEA w wersji 2019.3.1 i wyższej. Gdyby ktoś nie posiadał, tutaj znajduje się link , z którego można go pobrać. Pobierz wersję Community, ponieważ właśnie z niej będę korzystać.
  2. Sklonuj projekt z GitHub i zaimportuj go przez IDEA.
Otwórz IDEA: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 4Wybierz projekt debugowania-prezentacji , kliknij OK i pobierz: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 5Opuść import projektu ze źródeł zewnętrznych, Maven i kliknij Zakończ . Po zaimportowaniu projektu możemy opisać proces na żywym przykładzie.

Trochę teorii... obiecuję :D

Aby trochę rozpocząć debugowanie, musisz zrozumieć, czym jest punkt przerwania i poznać kilka skrótów klawiszowych potrzebnych na początek. BreakPoint to specjalny znacznik wyświetlający lokalizację lub stan, w którym aplikacja powinna zostać zatrzymana. Możesz ustawić punkt przerwania, klikając lewym przyciskiem myszy lewy pasek boczny lub klikając lokalizację kodu i naciskając Ctrl + F8 . Punkty przerwania występują w trzech typach: znak linii, znak zmiennej i znak metody. To wygląda tak:
  • Za linię:

    Debugowanie w Intellij IDEA: przewodnik dla początkujących - 6

    jeśli w wyrażeniu znajduje się lambda, IDEA oferuje wybór - umieścić wyrażenie w całej linii lub konkretnie w lambdzie:

    Debugowanie w Intellij IDEA: przewodnik dla początkujących - 7
  • Według metody:

    Debugowanie w Intellij IDEA: przewodnik dla początkujących - 8
  • Na zajęcia

    Debugowanie w Intellij IDEA: przewodnik dla początkujących - 9
Punkty przerwania można usunąć, wykonując te same czynności, co podczas ich dodawania. Są sytuacje, kiedy trzeba je dezaktywować (wyciszenie). Aby to zrobić, w sekcji Debugowanie możesz znaleźć ikonę Debugowanie w Intellij IDEA: przewodnik dla początkujących - 10, która sprawi, że wszystkie punkty przerwania będą dezaktywowane. Aby zobaczyć, które punkty przerwania zostały już ustawione, możesz albo przejść do Debugowania w lewym dolnym rogu i znaleźć ikonę Debugowanie w Intellij IDEA: poradnik dla początkujących - 11, albo nacisnąć Ctrl+Shift+F8 : Debugowanie w Intellij IDEA: przewodnik dla początkujących - 12Kiedy przejdziemy do listy punktów przerwania, zobaczymy: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 13Istnieją dwa punkty wstępne Tutaj:
  • Bee.java:24 - w klasie Bee w linii 24
  • Main.java:14 - w klasie Main w linii 14
Chciałbym zauważyć, że podczas klonowania projektu nie będziesz mieć tych punktów przerwania: musisz je ustawić samodzielnie! Dostępna jest także sekcja Punkty przerwania wyjątków Java . Bardzo przydatna rzecz. Za jego pomocą możesz dodać niejawny punkt przerwania, dzięki czemu program zatrzyma się przed zgłoszeniem dowolnego lub konkretnego wyjątku. Dodajmy niejawny punkt przerwania dla wyjątku RuntimeException. Można to łatwo zrobić: w lewym górnym rogu znajduje się znak plus „+”. Kliknij na nią i wybierz Punkty przerwania wyjątków Java : Debugowanie w Intellij IDEA: poradnik dla początkujących - 14W wyświetlonym oknie wpisz nazwę wyjątku, który należy dodać, wybierz z proponowanej listy i kliknij OK : Debugowanie w Intellij IDEA: przewodnik dla początkujących - 15Kończymy ten program edukacyjny i przechodzimy do ćwiczeń.

Chodźmy, włammy się do dziczy debugowania

Debugowanie w Intellij IDEA: przewodnik dla początkujących - 16Ponieważ jestem pszczelarzem dziedzicznym, na potrzeby prezentacji debugowania stworzyłem projekt opisujący proces zbierania nektaru przez pszczoły, przetwarzania nektaru na miód i pozyskiwania miodu z ula. Na podstawie dokumentacji pliku README znajdującego się w root projektu czytamy: oczekiwane zachowanie - ze wszystkich kwiatów, z których zostanie zebrany nektar (jako wartość podwójna ), zostanie zebrana ilość miodu równa połowie zebrany nektar. Projekt posiada następujące klasy:
  • Pszczoła - zwykła pszczoła robotnica;
  • BeeQueen – królowa pszczół;
  • BeeHive - ul;
  • HoneyPlant – roślina miododajna, z której zbiera się miód;
  • Main - gdzie public static void main()znajduje się metoda, w której rozpoczyna się projekt.
Jeśli uruchomimy metodę main(), okaże się, że nie dość, że nie jest liczona ilość miodu, to jeszcze pojawia się błąd... Debugowanie w Intellij IDEA: przewodnik dla początkujących - 17Trzeba się przyjrzeć, co tam jest nie tak. Ze śladu stosu w prawym dolnym rogu widzimy, że w programie HoneyPlant.java:20zostaje zgłoszony wyjątek RuntimeException: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 18Dokładnie tak jest w naszym przypadku: istnieje wyjątek RuntimeException, dodajmy wyszukiwanie takiego wyjątku, jak opisano powyżej, i uruchom main()metodę w Tryb debugowania. W tym celu należy kliknąć w zieloną strzałkę trójkąta w Intellij IDEA przed metodą main(): Debugowanie w Intellij IDEA: przewodnik dla początkujących - 19i otrzymamy zatrzymany program w chwili przed wyzwoleniem wyjątku z tą ikoną.Aby Debugowanie w Intellij IDEA: przewodnik dla początkujących - 20Debugowanie w Intellij IDEA: przewodnik dla początkujących - 21uzyskać pełne informacje należy zajrzeć do sekcji Debugowanie. Zawiera Zmienne , które pokazują wszystkie zmienne dostępne w tej części aplikacji:
  • nektar = 1,0;
  • pojemność nektaru = -1,0.
Wyjątek rzuca się słusznie, gdyż wartość ilości nektaru znajdującego się w roślinie miododajnej nie może być ujemna. Ale dlaczego tak się dzieje? Przecież jest sprawdzenie, czy w przypadku wyczerpania się nektaru, w liniach 15-17 zwracana jest wartość zerowa:
if ( nectar == 0 ) {
         return 0;
}
Problem polega jednak na tym, że sprawdza niewłaściwą zmienną... i jest to błąd w kodzie. Zamiast sprawdzać wartość nektaru w kwiatku, która znajduje się w zmiennej nectarCapacity , program sprawdza wartość nektaru , która wchodzi do metody i jest to ilość, jaką chcą pobrać z nektaru. Oto pierwszy błąd! Dlatego umieściliśmy to poprawnie i otrzymaliśmy wyrażenie:
if ( nectarCapacity == 0) {
         return 0;
}
Następnie uruchamiamy main()metodę w trybie normalnym (Run `Main.main()`)i już nie ma błędu, program zadziałał: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 22Aplikacja zadziałała i dała odpowiedź: „33,0 miodu wyprodukowało 7 pszczół z 2 miododajnych roślin” Wszystko byłoby w porządku, ale odpowiedź brzmi źle... Wszystko dlatego, że w dokumentacji pliku README jest napisane, że nektar zamienia się w miód w stosunku 2 do 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Z metody głównej widać, że są dwie rośliny miodu, odpowiednio 30 i 40 jednostek nektaru, więc ostatecznie powinieneś otrzymać 35 jednostek miodu. I pisze, że 33. Gdzie poszły pozostałe dwie jednostki?... Teraz się dowiemy! Aby to zrobić, musimy umieścić punkt przerwania w metodzie Main.main()w linii nr 28, gdzie zostanie ona wykonana beeHive.populateHoney()i uruchomić mainmetodę w trybie debugowania: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 23Przyjrzyjmy się temu punktowi bliżej. Program zatrzymał się przed wykonaniem 28. linii. Na dole widzimy sekcję Debugowanie, która opisuje wszystkie informacje na temat uruchomionej aplikacji. Część Zmienne, jak już wspomniano, zawiera wszystkie zmienne i obiekty dostępne z tej części aplikacji. Część Ramki pokazuje kroki, przez które przechodzi aplikacja, możesz spojrzeć na poprzedni krok i uzyskać wszystkie dane lokalne. Aby program nadal działał, możesz nacisnąć klawisz F9 lub zieloną ikonę, jak pokazano poniżej: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 24Aby zatrzymać program, kliknij czerwony kwadrat: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 25Aby ponownie uruchomić aplikację w trybie debugowania, kliknij strzałkę: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 26Następnie, aby przejść krok po kroku przez aplikację, możesz skorzystać z dwóch klawiszy:
  • F8 – przejdź przez sekcję kodu i nie wchodź w metody wewnętrzne;
  • F7 – przejdź przez sekcję kodu i wprowadź metody wewnętrzne.
Zatem, aby wprowadzić metodę do działania beeHive.populateHoney()należy wcisnąć F7 i ruszamy dalej: Debugowanie w Intellij IDEA: przewodnik dla początkujących - 27Następnie przechodzimy przez tryb debugowania za pomocą F8 stosując tę ​​metodę do końca i opisujemy co się dzieje w tej metodzie:
  • Linia 25 – Stream API służy do zbierania miodu od wszystkich pszczół;
  • 26. linia - do istniejącej dodaje się miód;
  • 27. linia - dla królowej przydzielono 2 jednostki miodu;
  • 28. linia - te dwie jednostki są usuwane z całkowitej ilości miodu;
  • Linia 29 - macica zjada ten miód.
To tam pojechały te dwie jednostki, hurra! Po rozmowie z analitykiem biznesowym dochodzimy do wniosku, że plik README dokumentacji zawiera błąd i będzie wymagał aktualizacji. Zaktualizujmy plik README:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
I tyle: wszystkie znalezione błędy zostały naprawione, możemy spokojnie dalej pić kawę i czytać artykuły na hubie JavaRush ze sprytnym spojrzeniem :)

Podsumować

W tym artykule dowiedzieliśmy się, że:
  • nie ma pracy bez błędów, a debugowanie to świetny sposób na ich rozwiązanie;
  • co to jest punkt przerwania i jakie typy on istnieje;
  • jak skonfigurować punkt przerwania wyjątku;
  • Jak poruszać się w trybie debugowania.

Artykuł do przeczytania

Zobacz także inne moje artykuły:
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION