IntelliJ: attach debugger

0

Witam,
Testuje IDE IntelliJ IDEA. Chce dołączyć się debuggerem do serwera aplikacyjnego, za pomocą adresu IP i portu.

W NetBeans IDE jest to banalne:

  1. Menu / Debug / Attach Debugger.
  2. Wybieram Debugger (Java Debugger (JPDA), Host, port.
  3. Jestem w sesji debugera.
  4. Jeśli zakończę w każdej chwili mogę podłączyć się ponownie wracając do kroku 1 (bez restartu serwera aplikacyjnego).

Jest to naprawdę proste. Nie musze ponownie uruchamiać serwera aplikacyjnego.

Jak zrobić analogiczną operację w IntelliJ IDEA? Czy muszę doinstalować customowy plugin? Nie mogę nigdzie znaleźć dla mnie elementarnej opcji 'attach debugger'. To musi być proste.

Pozdrawiam,

0

Dodam, że korzystam z serwera GlassFish.

Jestem świadomy, że jest dostępna opcja Run / Debug Configurations, gdzie ustawia się startup script itp. Wciąż nie znajduję jednak opcji 'attach debugger'. Nie chcę uruchamiać ponownie serwera aplikacyjnego dla każdej sesji debugera.

0

Run -> Debug - Edit configurations...

0

Walczę. Zniechęcam się. Gdy próbuje podłączyć się debuggerem IDE proponuje mi:

'Restart server'
'Run configuration 'Local' is running. Do you want to restart server in 'Debug' mode?

Nie chcę.

Chcę podłączyć się debuggerem pod konkretny adres IP i port. Nic więcej. Serwer aplikacyjny jest już uruchomiony w tym trybie.

Próbowałem zastosować się do Twojej rady, ale w tym okienku mogę ustawić tylko opcje uruchomienia w trybie debug. A ja nie chcę dużego projektu co chwilę uruchamiać ponownie. Chcę podłączyć się do serwera aplikacyjnego ('attach debugger').

Dziwny poziom skomplikowania jak na produkt komercyjny.

0

Wybierz remote debugging

0

Jestem już znacznie bliżej. Skonfigurowałem jako Debug.

W logu dostaje pozytywny komunikat:

Connected to the target VM, address: '192.168.56.4:9009', transport: 'socket'

Niestety, próba wejścia w breakpoint kończy się wstrzymaniem aplikacji, a nie mogę zrobić kroku dalej (nie wchodzi do punktu). Jak wyłącze tryb debug aplikacja kontunuuje. Raz udało się wejść do breakpointu, nie wiadomo dlaczego i mogłem debugować jak w NetBeans. Generalnie po restarcie serwera aplikacyjnego debuger zachowuje się tak samo. Sprawdziłem działanie attach w NetBeans i nie ma problemu.

Coś wygląda na to, że IntelliJ nie może dogadać się z GlassFishem. Ciekawe czy ktoś używa takiego połączenia.

Dzięki Koziołek za wskazówki, ale nie jest to jeszcze końcowe rozwiązanie.

0

Napisałem 'Skonfigurowałem jako Debug.' Miałem na myśli RemoteDebug opisany przez Koziołka.

Podsumowując: łączy się, ale przeważnie zamarza, gdy napotka breakpoint (freeze). Nie mam możliwości zrobienia kroku na przód.

Z jakimi serwerami aplikacyjnymi zwykle pracujecie z IntelliJ IDEA?

0

Jak wyłącze tryb debug aplikacja kontunuuje.

Co to znaczy "wyłącze tryb debug"? JVMka nie może być przełączana między trybami debug i zwykłym. Możesz wystartować dwie, albo ubić jedną, a wystartować drugą (w sensie JVMki jako osobne procesy).

Podsumowując: łączy się, ale przeważnie zamarza, gdy napotka breakpoint (freeze). Nie mam możliwości zrobienia kroku na przód.

Czyli? Jeśli ci się zatrzyma, to powinieneś mieć okienko jak poniżej:
ij_move_debug_tab.png
Wtedy klikasz zieloną strzałkę z lewej albo klawisz F9 i program jedzie dalej.

0

Wibowit dziękuję za zainteresowanie.

  1. Podlaczylem sie do debugera, w konsoli pojawil sie napis:
    'Connected to the target VM, address: '192.168.56.4:9009', transport: 'socket' '
  2. Po wlaczeniu debugera (podlaczeniu sie na zdalny serwer) widze nastepujacy ekran z watkami do wyboru (w zalaczniku).
  3. Aplikacja na zdalnym serwerze sie zamrozila: czeka az krok po kroku bede dzialal debugerem.
  4. Nie moge wykonac kroku do przodu, jakby nie lapal kontekstu.
  5. Dopiero po wcisnieciu czerwonego kwadrata (CTRL+F2) aplikacja ozywa, jednak nie dokonalem debugowania.

Gdzie robie blad?

0
  1. Nie zaznaczyłeś na liście wątków tego który debugujesz. Przecież serwer ma dziesiątki swoich wątków! Musisz wybrać ten na którym się zatrzymałeś.
  2. Na obrazku widzę że wstawiłeś breakpoint na sygnaturze metody. Mam wątpliwości czy to chciałeś zrobić...
0

Racja. Widocznie NetBeans po prostu do razu wstrzeliwuje się do właściwego wątku i stąd cała operacja wydaje się znacznie łatwiejsza (w jakimś stopniu jest).

Nic dziwnego, że nie debuguje dla wszystkich wątków: musiałoby to niemiłosiernie mulić. Symbole swoje ważą.

Ok, problem może zostać uznany za rozwiązany. Mam nadzieję, że za jakiś czas pokonam trudności w pracy z IntelliJ. Póki co bardzo pozytywne wrażenie zrobiła na mnie nawigacja i ułożenie okien (znacznie bardziej podoba mi się jak w NetBeans). Bardzo podoba mi się spodób pracy z Mavenem.

Jednak praca z GlassFishem jest dużo trudniejsza, jeszcze nie udało mi się uruchomic remote deployment, co najwyżej lokalny. Inna trudność to znacznie większy poziom trudności w konfiguracji projektu JEE7, NetBeans pod tym względem lepiej przy mojej obecnej znajomości środowiska doskonale nadaje się do tego celu. Po wstępnej konfiguracji (póki co w NetBeans) mogę już dalej rozwijać projekty w środowisku IntelliJ i cieszyć się wygodnym edytorem.

Dziękuję wszystkim.

1 użytkowników online, w tym zalogowanych: 0, gości: 1