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(..).
![](https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_1024,h_339/https://clockworkjava.pl/wp-content/uploads/2020/12/image-5-1024x339.png)
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.
![](https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_1024,h_509/https://clockworkjava.pl/wp-content/uploads/2020/12/image-6-1024x509.png)
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.
![](https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_1024,h_242/https://clockworkjava.pl/wp-content/uploads/2020/12/image-7-1024x242.png)
Ustawione na poziomie pola klasy zatrzymują program za każdym razem gdy zmienia się wartość danego pola.
![](https://sp-ao.shortpixel.ai/client/to_auto,q_glossy,ret_img,w_588,h_171/https://clockworkjava.pl/wp-content/uploads/2020/12/image-8.png)
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 komentarze do “Debugowanie w IntelliJ #3 Więcej możliwości przy pracy z breakpointami.”