Debugowanie w IntelliJ #3 Więcej możliwości przy pracy z breakpointami.

W poprzednich odcinkach cyklu poznaliśmy podstawy debugowania oraz poruszania się po kodzie w trakcie sesji debugowania. W tym wpisie poświęcimy więcej uwagi breakpointom.

Wiele breakpointów

Nic nie stoi na przeszkodzie, by w kodzie był więcej niż jeden breakpoint. Wówczas program zatrzyma działanie przy napotkaniu każdego z nich. Natrafiamy na pierwszy breakpoint i odpalamy zieloną strzałką dalsze procesowanie programu. Gdy tylko aplikacja dotrze do wywołania kodu, przy którym znajduje się drugi breakpoint – program zostanie ponownie zatrzymany.

Dodatkowo każdy breakpoint możemy chwilowo wyciszyć. Możemy to zrobić klikają na niego z przytrzymanym klawiszem Alt. Wyciszenie ma taką przewagę ponad wyłączeniem zupełnym, że wciąż wiemy gdzie dany breakpoint był i w razie czego możemy go ponownie aktywować, a nie zastanawiać się “gdzie to było”.

Warunkowe zatrzymanie programu i wykonanie kodu przy zatrzymaniu

Klikając prawym przyciskiem myszy na breakpoincie (czerwony kółku) uzyskujemy dostęp do kilku opcji. Możemy wyciszyć danego breakpointa, oznaczyć, że ma się zatrzymywać tylko w konkretnym wątku (ale tematu debugowania wielowątkowych programów nie będziemy w tym cyklu poruszać) oraz możemy podać warunek (Condition), przy którym dany breakpoint ma zatrzymać działanie programu.

W tym polu możemy wpisać pewien warunek, który ma zostać spełniony, by program się zatrzymał. W tym wypadku interesuje nas konkretny gość, więc ustawiamy warunek name.equals(..).

Wykonanie kodu przy osiągnięciu danego breakpointu

Możemy również po prawym kliku na breakpoint wybrać More, dzięki czemu będzie nam udostępniona jeszcze jedna opcja. Mianowicie chodzi o wykonanie dowolnego kodu (i zalogowanie wyniku do konsoli), gdy dany breakpoint zostanie osiągnięty.

Po uruchomieniu programu i przy zatrzymaniu się na danym punkcie stopu na konsole zostanie zalogowana informacja

BREAKPOINT! Paul Schäfer
Breakpoint reached at pl.clockworkjava.hotelreservation.jpa.GuestRepository.createNewGuest(GuestRepository.java:19)
void

Breakpoint na poziomie zmiennej i metody

Breakpointy możemy ustawić na poziomie stanu obiektu i metod.

Ustawione na poziomie metody zatrzymują program na początku każdego wywołania danej metody, i na końcu.

Ustawione na poziomie pola klasy zatrzymują program za każdym razem gdy zmienia się wartość danego pola.

Pozostałe artykuły z cyklu:
1. Podstawy debugowania w IntelliJ
2. Poruszanie się po stosie w trybie debug
3. Więcej możliwości przy pracy z breakpointami

By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.

2 myśli w temacie “Debugowanie w IntelliJ #3 Więcej możliwości przy pracy z breakpointami.”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *