CodeGym /Blog Java /Random-PL /Debugowanie w IntelliJ IDEA: przewodnik dla początkującyc...
John Squirrels
Poziom 41
San Francisco

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

Opublikowano w grupie Random-PL
Witam wszystkich w społeczności CodeGym! Dzisiaj porozmawiajmy o debugowaniu — co to jest i jak debugować w IntelliJ IDEA. Ten artykuł jest przeznaczony dla osób, które mają już minimalną wiedzę na temat Java Core. Nie będzie żadnych frameworków ani skomplikowanych procedur publikowania bibliotek. Spokojny spacer. Więc rozgość się i zaczynajmy! Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 1

Dlaczego potrzebujesz trybu debugowania

Od razu wyjaśnijmy sobie coś: nie ma kodu bez błędów... Tak po prostu działa życie. Nie powinniśmy więc załamywać się i poddawać, jeśli nasz kod nie działa tak, jak tego oczekiwaliśmy. Ale co powinniśmy zrobić? Cóż, moglibyśmy umieszczać System.out.printlninstrukcje wszędzie, a następnie przeczesywać dane wyjściowe konsoli w nadziei znalezienia błędu. To powiedziawszy, możesz (i ludzie to robią) debugować, używając starannego rejestrowania. Ale jeśli możesz uruchomić swój kod na komputerze lokalnym, lepiej jest użyć trybu debugowania . Chcę od razu zauważyć, że w tym artykule rozważymy debugowanie projektu przy użyciu IntelliJ IDEA.

Co to jest tryb debugowania?

Tryb debugowania służy do debugowania (sprawdzania) działającego kodu. Umożliwia zatrzymanie egzekucji w wyznaczonych miejscach i sprawdzenie, jak postępują sprawy. Pozwala zrozumieć stan programu w określonym miejscu w kodzie. To tak, jakby móc zatrzymać zegar i spojrzeć na wszystko z boku. Fajne, prawda? Naszym celem jest szybkie i łatwe nauczenie się debugowania aplikacji przy użyciu naszego ukochanego środowiska programistycznego IntelliJ IDEA.

Co jest potrzebne do rozpoczęcia debugowania

Oto kilka bezpłatnych rad: czytając ten artykuł, rób wszystko, co zostanie tutaj opisane — masz wszystko, czego potrzebujesz, aby postępować zgodnie z nim. Czego potrzebujesz:
  1. IntelliJ IDEA w wersji 2019.3.1 lub nowszej. Jeśli ktoś nie ma tego, oto link, z którego można go pobrać . Pobierz Community Edition — to wersja, której będę używać.
  2. Sklonuj ten projekt GitHub i zaimportuj go przez IDEA.
Otwórz POMYSŁ: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 2Wybierz projekt prezentacji debugowania i naciśnij OK . Następnie zobaczysz następujące okno: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 3Pozostaw zaznaczone opcje: Importuj projekt ze źródeł zewnętrznych i Maven . Kliknij Zakończ . Teraz, gdy zaimportowaliśmy projekt, możemy opisać resztę procesu na żywym przykładzie.

Trochę teorii... obiecuję :D

Aby choć trochę rozpocząć debugowanie, musisz zrozumieć, czym jest punkt przerwania i znać kilka skrótów klawiszowych. Punkt przerwania to specjalny znacznik wskazujący miejsce zatrzymania wykonywania aplikacji, prawdopodobnie na podstawie stanu aplikacji. Możesz ustawić punkt przerwania, klikając lewym przyciskiem myszy lewy panel boczny lub klikając lokalizację kodu i naciskając Ctrl+F8 . Przyjrzyjmy się trzem typom punktów przerwania: punkty przerwania linii, punkty kontrolne pola i punkty przerwania metody. tak to wygląda:
  • na linii:

    Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 4

    Jeśli instrukcja zawiera wyrażenie lambda, IDEA prosi o wybranie, czy umieścić punkt przerwania w całej instrukcji, czy tylko w wyrażeniu lambda:

    Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 5
  • Na metodzie:

    Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 6
  • na zajęciach:

    Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 7
Punkty przerwania można usunąć, wykonując te same czynności, co przy ich dodawaniu. Są sytuacje, w których będziesz chciał je dezaktywować (wyciszyć). Aby to zrobić, znajdź Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 8ikonę w sekcji Debugowanie. Spowoduje to wyciszenie wszystkich punktów przerwania. Aby zobaczyć, jakie punkty przerwania zostały ustawione, możesz przejść do sekcji Debug w lewym dolnym rogu i znaleźć ikonę Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 9lub nacisnąć Ctrl + Shift + F8 : Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 10Przechodząc do listy punktów przerwania, zobaczymy: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 11Są dwa punkty przerwania Tutaj:
  • Bee.java:24 — w klasie Bee w linii 24
  • Main.java:14 — w klasie Main w linii 14
Pamiętaj, że te punkty przerwania nie zostaną ustawione automatycznie, jeśli sklonowałeś projekt: musisz je ustawić samodzielnie! Istnieje również sekcja Punkty przerwania wyjątków Java . To jest bardzo użyteczne. Tutaj możesz dodać niejawny punkt przerwania, aby program zatrzymywał się przed zgłoszeniem jakiegokolwiek wyjątku lub określonego wyjątku. Dodamy niejawny punkt przerwania dla RuntimeException. Jest to łatwe do zrobienia. Znajdź ikonę „+” w lewym górnym rogu. Kliknij na niego i wybierz Punkty przerwania wyjątków Java : Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 12W wyświetlonym oknie wpisz nazwę wyjątku, który chcesz dodać, wybierz z listy i kliknij OK : Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 13To kończy nasz elementarz dotyczący konfiguracji, więc teraz „ przejdę do jakiejś praktyki.

Chodźmy zrobić to, co nazywa się debugowaniem!

Pochodzę z długiej linii rodzinnych pszczelarzy, więc projekt, który stworzyłem, aby zilustrować debugowanie, opisuje modele procesu zbierania przez pszczoły nektaru, przetwarzania nektaru na miód, a następnie pozyskiwania miodu z ula. Zgodnie z plikiem README dokumentacji , który znajduje się w katalogu głównym projektu, oczekiwane zachowanie wszystkich kwiatów, z których pobierany jest nektar, to ilość zebranego miodu (przyjmująca postać podwójnego ) równa połowie zebrany nektar. Projekt ma następujące klasy:
  • Pszczoła — zwykła pszczoła robotnica
  • BeeQueen — królowa pszczół
  • BeeHive — ul
  • HoneyPlant — roślina miodu (źródło nektaru), z której zbierany jest nektar
  • Main — tutaj znajdujemy public static void main()metodę, od której rozpoczyna się wykonanie.
Jeśli uruchomimy main()metodę, okaże się, że nasz program nie tylko nie oblicza ilości miodu, ale także zgłasza wyjątek... Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 14Musimy zbadać i ustalić, na czym polega problem. Ze stosu śledzenia w prawym dolnym rogu możemy zobaczyć, że w RuntimeException został rzucony na HoneyPlant.java:20: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 15Właśnie o tym mówiliśmy powyżej. Przyjrzyjmy się temu wyjątkowi RuntimeException, uruchamiając main()metodę w trybie debugowania. Aby to zrobić, kliknij zieloną strzałkę trójkąta w IntelliJ IDEA obok metody main(). Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 16W rezultacie zatrzymamy program w chwili tuż przed zgłoszeniem wyjątku i zobaczymy tę ikonę: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 17Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 18Aby uzyskać wszystkie dostępne informacje, musimy zajrzeć do sekcji Debug. Ma Zmienneokienko prezentujące wszystkie zmienne dostępne w tej części aplikacji:
  • nektar = 1,0;
  • pojemność nektaru = -1,0.
Rzucenie wyjątku ma sens, ponieważ roślina miododajna nie może mieć ujemnej ilości nektaru. Ale dlaczego tak się dzieje? Przecież w liniach 15-17 sprawdzamy czy zapas nektaru się wyczerpał i zwracamy zero jeśli jest:

	if (nectar == 0) {
   	     return 0;
}
Ale problem polega na tym, że sprawdzamy niewłaściwą zmienną. To jest błąd w kodzie. Zamiast sprawdzać ilość nektaru dostępnego w kwiecie (który jest przechowywany w zmiennej nectarCapacity ), program sprawdza wartość parametru nektaru metody , czyli ilość nektaru, którą chcemy pobrać z kwiatu. Oto jest! Nasz pierwszy błąd! Po naprawieniu tego otrzymujemy następujący kod:

	if (nectarCapacity == 0) {
   	     return 0;
}
Teraz uruchom main()metodę w normalny sposób (Run 'Main.main()'). Nie ma żadnego wyjątku, a program działa: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 19Aplikacja działa do końca i daje następującą odpowiedź:

"33.0 honey was produced by 7 bees from 2 honey plants"
Teraz wszystko byłoby dobrze, ale ta odpowiedź jest błędna... Zgodnie z plikiem README dokumentacji , nektar jest przetwarzany na miód w stosunku 2 do 1:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Główna metoda wyraźnie obejmuje dwie rośliny miodu z odpowiednio 30 i 40 jednostkami nektaru. Tak więc docelowo powinniśmy otrzymać 35 jednostek miodu. Ale program mówi nam, że mamy 33. Gdzie podziały się pozostałe dwie jednostki? Dowiedzmy Się! Aby to zrobić, ustaw punkt przerwania w Main.main()metodzie w linii 28, gdzie beeHive.populateHoney()jest wywołana i uruchom main()metodę w trybie Debug: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 20Rozważymy ten punkt bardziej szczegółowo. Program przestał działać przed wykonaniem linii 28. W dolnej części widzimy sekcję Debug, która pokazuje wszystkie dostępne informacje o uruchomionej aplikacji. Jak już wspomniano, panel Zmienne zawiera wszystkie zmienne i obiekty dostępne z tej części aplikacji. Okienko Ramki pokazuje kroki, przez które przechodzi aplikacja — możesz przejrzeć poprzednie kroki (ramki) i zobaczyć wszystkie dane lokalne. Aby kontynuować działanie programu, możesz nacisnąć klawisz F9 lub zieloną ikonę, jak pokazano poniżej: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 21Aby zatrzymać program, kliknij czerwony kwadrat: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 22Aby ponownie uruchomić aplikację w trybie debugowania, kliknij strzałkę: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 23Dalej, możesz przejść przez aplikacja krok po kroku za pomocą dwóch klawiszy:
  • F8 — Przejdź przez kod bez wchodzenia w metody;
  • F7 — Przejdź przez kod i przejdź do metod.
W naszym przypadku musimy nacisnąć F7, aby wejść do beeHive.populateHoney()metody. Wchodząc w to, otrzymujemy: Debugowanie w IntelliJ IDEA: przewodnik dla początkujących - 24Teraz użyjemy F8 , aby przejść przez tę metodę i opisać, co się w niej dzieje:
  • Linia 25 — Stream API służy do zbierania nektaru od wszystkich pszczół
  • Linia 26 — Nowo utworzony miód jest dodawany do istniejącego miodu;
  • Linia 27 — 2 jednostki miodu przeznaczone są dla królowej
  • Wiersz 28 — Te dwie jednostki są usuwane z całkowitej ilości miodu
  • Linia 29 — Królowa zjada ten miód.
A więc to tam poszły dwie zaginione jednostki! Hurra! Po rozmowie z analitykiem biznesowym dochodzimy do wniosku, że plik README dokumentacji zawiera błąd i wymaga aktualizacji. Zaktualizujmy plik README:

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Skończyliśmy. Naprawiliśmy wszystkie znalezione błędy. Możemy spokojnie kontynuować z zadowolonym spojrzeniem, popijać kawę i czytać artykuły na Stack Overflow CodeGym :)

Podsumujmy

W tym artykule dowiedzieliśmy się:
  • praca każdego ma błędy, a debugowanie to świetny sposób na ich naprawienie
  • co to jest punkt przerwania i jakie są rodzaje punktów przerwania
  • jak ustawić punkt przerwania wyjątku
  • jak przejść przez kod w trybie debugowania

Artykuł do przeczytania

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION