Dołącz debuger IntelliJ IDEA do działającego procesu Java


237

Czy można dołączyć debuger IntelliJ IDEA do działającego procesu Java? Jeśli tak to jak?


3
Oczywiście. Musisz utworzyć konfigurację „Zdalne” uruchamianie / debugowanie. Więcej tutaj
Vic

2
Te argumenty wiersza poleceń są ODCZYTYWANE TYLKO od 14.0.2. Możesz edytować tylko kilka z nich, co nie pomaga rozwiązać problemu w tym pytaniu. Jakiś pomysł jak to naprawić?
nuzzolilo


Odpowiedzi:


372

Tak! Oto jak to skonfigurować.

Uruchom konfigurację

Utwórz konfigurację zdalnego uruchamiania:

  1. Uruchom -> Edytuj konfiguracje ...
  2. Kliknij „+” w lewym górnym rogu
  3. Wybierz opcję „Zdalne” w lewym panelu
  4. Wybierz nazwę (nazwałem mój „zdalnym debugowaniem”)
  5. Kliknij „OK”, aby zapisać:

wprowadź opis zdjęcia tutaj

Opcje JVM

Powyższa konfiguracja zapewnia trzy pola tylko do odczytu. Są to opcje, które każą JVM otworzyć port 5005 do zdalnego debugowania podczas uruchamiania aplikacji. Dodaj odpowiednią do opcji JVM debugowanej aplikacji. Jednym ze sposobów, w jaki możesz to zrobić, byłoby:

export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

Zależy to jednak od sposobu uruchomienia aplikacji. Jeśli nie masz pewności, który z trzech dotyczy Ciebie, zacznij od pierwszego i przewiń listę, aż znajdziesz ten, który działa.

Możesz zmienić suspend=nna, suspend=yaby zmusić aplikację do czekania, aż połączysz się z IntelliJ przed jego uruchomieniem. Jest to pomocne, jeśli punkt przerwania, który chcesz trafić, pojawia się podczas uruchamiania aplikacji.

Odpluskwić

Uruchom aplikację w normalny sposób, a następnie w IntelliJ wybierz nową konfigurację i naciśnij „Debuguj”.

wprowadź opis zdjęcia tutaj

IntelliJ połączy się z JVM i zainicjuje zdalne debugowanie.

Możesz teraz debugować aplikację, dodając punkty przerwania do kodu w razie potrzeby. Dane wyjściowe aplikacji będą nadal pojawiać się tam, gdzie wcześniej, ale punkty przerwania trafią w IntelliJ.


2
Opcja „Zdalny” jest nieobecna w moim Intellij IDEA 15.0.2 na Mac OS El Capitan. Jak mogę uzyskać tę opcję?
user674669,

@ user674669 Nie jestem pewien. Może Remotenie jest dostępny w wydaniu społecznościowym? Korzystam z wersji płatnej. Czy ktoś z edycją społeczności może potwierdzić?
Cory Klein

@CoryKlein Czy wiesz, jak pobrać dane wyjściowe z System.out.printlnIntelliJ podczas zdalnego debugowania?
Don Rhummy,

1
@DonRhummy Jeśli dowiesz się, jak to zrobić, chętnie dodam te informacje do tej odpowiedzi, ale AFAIK IntelliJ nie obsługuje obecnie przesyłania strumieniowego stdout i stderr ze zdalnej aplikacji z powrotem do IntelliJ.
Cory Klein,

Jeśli zdalny serwer jest dostępny tylko przez ssh, w jaki sposób określamy plik klucza?
vach

44

Jest to możliwe, ale musisz dodać kilka flag JVM podczas uruchamiania aplikacji.

Musisz dodać konfigurację zdalnego debugowania: Edytuj konfigurację -> Zdalna.

Następnie w wyświetlonym oknie dialogowym znajdziesz parametry, które musisz dodać do wykonania programu, takie jak:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

Następnie po uruchomieniu aplikacji możesz dołączyć debugger. Jeśli chcesz, aby aplikacja czekała na połączenie z debuggerem, po prostu zmień flagę zawieszenia na y ( suspend=y)


Zdezorientowało mnie to, że edytujesz poniższe dane wejściowe, a następnie aktualizujesz powyższe ciągi opcji (przynajmniej w 13.1 CE).
Carl G

7
Te argumenty wiersza poleceń są ODCZYTYWANE TYLKO od 14.0.2. Możesz edytować kilka z nich. Jakiś pomysł jak to naprawić?
nuzzolilo

1
Ponadto do jakiego procesu dołączasz, ustawiając te opcje?
nuzzolilo

5
Pierwszy działał dla mnie. Uwaga dla innych - musiałem to określić przed flagą -jar.
Jim

2
@Nuzzolilo, argumenty wiersza poleceń wyświetlane w pomysle służą wyłącznie do wyświetlania, a zatem są tylko do odczytu. Nie należy ich dodawać do pomysłu, ale zdalną aplikację Java, którą chcesz debugować.
Ganesh Krishnan,

6

w AndroidStudio lub pomysł

  1. Skonfiguruj aplikację będzie debugować, otwórz Edytuj konfiguracje

dodaj „Opcje VM” Konfiguracja “-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005” zapamiętaj „adres”

wprowadź opis zdjęcia tutaj

  1. Skonfiguruj zdalny debugger, jeśli nie zostanie zamknięty, kliknij +, aby dodać

podaj „Port” tak samo jak w kroku 1 „adres” wprowadź opis zdjęcia tutaj


6

Nie zapomnij też, że musisz dodać flagę „-Xdebug” w aplikacji JAVA_OPTS, jeśli chcesz połączyć się w trybie debugowania.


0

Używam również aplikacji GUI Tomcat (w moim przypadku: C: \ tomcat \ bin \ Tomcat9w.bin).

  • Przejdź do zakładki Java :

    wprowadź opis zdjęcia tutaj

  • Ustaw właściwości Java, na przykład:

    Maszyna wirtualna Java

    C: \ Program Files \ Java \ jre-10.0.2 \ bin \ server \ jvm.dll

    Maszyna wirtualna Java

    C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar

    Opcje Java :

    -Dcatalina.home = C: \ tomcat

    -Dcatalina.base = C: \ tomcat

    -Djava.io.tmpdir = C: \ tomcat \ temp

    -Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties

    -agentlib: jdwp = transport = dt_socket, server = y, suspend = n, address = *: 8000

    Opcje Java 9 :

    --add-opens = java.base / java.lang = WSZYSTKO NIEZNAMIONE

    --add-opens = java.base / java.io = WSZYSTKO NIEZNAMIONE

    --add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.