Nie mogę debugować aplikacji tomcat za pośrednictwem Eclipse. Ustawiłem
CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
a następnie uruchomić bin/catalina.sh
, gdzie widzę wyjście mówiąc, że to nasłuchiwanie dt_socket
na port 8000
. Ale ilekroć próbuję połączyć się z portem 8000
w Eclipse (dodając wpis w menu zdalnej aplikacji java), narzeka na odmowę połączenia. Jakieś pomysły?
Odpowiedzi:
Czy możesz sprawdzić, czy to działa?
źródło
set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
catalina.bat jpda start
suspend
określa, czy jvm ma czekać na debuger, czy kontynuować. Zobacz ten dokument .catalina.sh jpda start
powinno wystarczyć. Catalina.sh ma kilkaJPDA_*
parametrów, które można wykorzystać na przykład do zmiany portu, zapoznaj się z dokumentacją w pliku.Spędziłem nad tym trochę czasu, aby uzyskać właściwe informacje.
Oto szczegółowe informacje krok po kroku.
Środowisko: Windows 7
Wersja TomCat: 7.0.0
IDE: Eclipse
Konfiguracje, które mają zostać dodane w celu włączenia zdalnego debugowania za pomocą programu Tomcat, to
Nie polecam powyższej konfiguracji dla środowiska innego niż Windows. Aby dodać powyższą konfigurację, kliknij dwukrotnie serwer Tomcat, który będzie dostępny w widoku serwera. Znajdź poniższy zrzut ekranu.
Teraz dodaj powyższą konfigurację środowiska wykonawczego do tomcat. Do tego sprawdzenia poniżej zrzut ekranu.
Teraz dotarłem do zakładki Arugments w Edytuj właściwości konfiguracji uruchamiania, jak pokazano na poniższym zrzucie ekranu.
Sekcja argumentów GoTo VM dodaje te wiersze.
Teraz muszę debugować przycisk dostępny na pasku narzędzi zaćmienia.
W konfiguracjach debugowania znajdź „Remote Java Application” i kliknij na nią dwukrotnie.
W polu Nazwa wprowadź dowolną nazwę, którą chcesz.
Z pola projektu za pomocą przycisku przeglądania wybierz projekt, w którym chcesz przeprowadzić zdalne debugowanie.
Nazwa hosta to nic innego jak adres hosta. Tutaj pracuję lokalnie, więc jest to „localhost”.
W ostatniej kolumnie Port wartość powinna wynosić 8000. Oprócz pól tekstowych Nazwa i Projekt pozostałe dwie kolumny Host i port zostaną wypełnione przez samo zaćmienie, jeśli nie sprawią, że będziesz mieć takie same wartości, jak wspomniano. Sprawdź zrzut ekranu, aby uzyskać informacje.
Teraz kliknij prawym przyciskiem myszy TomcatServer w konsoli serwera i wybierz Dodaj i usuń z menu kontekstowego. W tym oknie dialogowym możesz dodać projekt do serwera.
Teraz uruchom serwer Tomcat.
Teraz uruchom TomCatDebugConfiguration z narzędzia debugowania.
Ostatnio otwórz wewnętrzną lub zewnętrzną przeglądarkę i uruchom swój projekt. Jeśli sterowanie wykonaniem osiągnęło punkty przerwania, zaćmienie zapyta o perspektywę debugowania.
źródło
W katalogu tomcat bin, w którym znajduje się
catalina.bat
lub.sh
(aka {CATALINA_BASE} / bin), edytuj (utwórz, jeśli nie ma):Dodaj następujący wiersz:
To wszystko, co musisz zrobić, nie musisz edytować
catalina.bat
(ani.sh
) pliku.Zobacz komentarze w
catalina.bat
lubcatalina.sh
.Może być konieczne dostosowanie składni do konkretnego środowiska / sytuacji. Na przykład, jeśli masz już zdefiniowane CATALINA_OPTS, możesz zrobić coś takiego (w środowisku Windows):
Aby debugować z Eclipse:
uruchom-> Konfiguracje debugowania ...-> Zdalna aplikacja Java-> Nowa
i określ nazwę, projekt, który debugujesz, oraz host i port debugowania tomcat określony powyżej.
źródło
setenv.bat
wbin
katalogu umieścić linię jakset JPDA_OPTS= -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
, użytkowaniastartup.bat
, aby rozpocząć TomcatW
catalina.bat
pliku proszę zmodyfikować poniższe.Krok 1:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Krok 2:
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
Krok 3: Uruchom Tomcat z wiersza poleceń, jak poniżej:
catalina.sh jpda start
Krok 4: Następnie w zaćmieniu utwórz konfigurację debugowania
project name
.Standard(Socket Attach)
localhost
8000
(lub dowolny numer portu, ale w innych miejscach powinien być taki sam).źródło
Wiele z powyższych odpowiedzi jest poprawnych, ale pamiętaj, że domyślnie debugger nasłuchuje na hoście lokalnym , co oznacza, że możesz debugować tylko wtedy, gdy uruchomisz klienta debugującego (na przykład IDE) na tej samej maszynie.
Jeśli debugujesz zdalny serwer , będziesz musiał na przykład określić poprawny adres IP na tym serwerze, aby nasłuchiwać
Zauważ, że adres to teraz 10.1.1.33 : 8000
Oczywiście możesz również sprawdzić, który adres IP jest faktycznie używany, uruchamiając
To polecenie działa zarówno w systemie Windows, jak i Linux - wystarczy odfiltrować port za pomocą
find
(Windows) lubgrep
(Linux).źródło
Po prostu biegnij
./catalina.sh jpda start
(rozwidla) lub./catalina.sh jpda run
(nie rozwidla się, nie ma wzmianki w pomocy). Wszystkie wymienione tutaj opcje domyślnie mają rozsądne wartości.źródło
Pozwólcie, że przedstawię prosty sposób włączenia trybu zdalnego debugowania w tomcat7 z eclipse (Windows).
Krok 1: otwórz plik bin / startup.bat
Krok 2: dodaj poniższe wiersze do debugowania z opcją JDPA (powinien zaczynać się wiersz pliku)
Krok 3: w tym samym pliku ... przejdź na koniec pliku zmodyfikuj tę linię -
krok 4: następnie po prostu uruchom bin> startup.bat (więc teraz twój serwer Tomcat działał w trybie zdalnym z portem 8000).
krok 5: następnie połączmy twój projekt źródłowy przez eclipse IDE ze zdalnym klientem.
krok 6: W Eclipse IDE przejdź do „konfiguracji debugowania”
krok 7: kliknij „zdalna aplikacja java”, a następnie kliknij „Nowy”
krok 8. w zakładce „connect” ustaw wartość parametru
krok 9: kliknij zastosuj i debuguj.
więc w końcu twój zdalny klient eclipse jest połączony z działającym serwerem Tomcat (tryb debugowania).
Mam nadzieję, że to podejście może ci pomóc.
Pozdrowienia..
źródło
Zmodyfikuj plik catalina.bat, aby dodać
i
Opcjonalnie: Dodaj poniższy wiersz, aby domyślnie uruchamiać tryb debugowania po uruchomieniu startup.bat
Eclipse lub STS wybierz konfigurację debugowania kliknij prawym przyciskiem myszy -> nowy
źródło
Jeśli nadal wszystkie powyższe nie działają, zawsze możesz dodać do skryptu
źródło
W tomcat 7, catalina.sh ma ten kod:
Ii sugeruje, że możesz skonfigurować JPDA za pomocą:
Lub z:
I na koniec użyj:
catalina.sh jpda start
pozdrowienia
źródło
Miałem ten problem podczas uruchamiania Tomcata w kontenerze Docker. Aby to naprawić, upewnij się, że dodajesz argument „-p 8000: 8000” w poleceniu docker run, aby udostępnić ten port na komputerze lokalnym. Będziesz oczywiście potrzebować pliku setenv.sh w swoim $ {CATALINA_HOME} / bin / w swoim kontenerze.
źródło
Modyfikacja startup.bat za pomocą CATALINA_OPTS I JPDA_OPTS nie zadziałała, ale dodanie ich do catalina.bat zadziałało
CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, adres = 8000, serwer = y, zawieszenie = n"
JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, adres = 8000, serwer = y, suspend = n"
zmień wywołanie "% EXECUTABLE%" start% CMD_LINE_ARGS% na
zadzwoń do "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%
Następnie skonfiguruj zdalną aplikację java w konfiguracjach debugowania w Eclipse.
źródło
Po pierwsze, jeśli otworzysz catalina.bat za pomocą edytora tekstu, zobaczysz, że: „Nie ustawiaj zmiennych w tym skrypcie .....” Więc nigdy nie zmieniaj tego w tym skrypcie, zamiast tego możesz wykonać poniższe czynności:
Następnie ustaw 2 zmienne w tym pliku bat, takie jak:
set CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, address = 8000, server = y, suspend = n"
set JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, address = 8000, server = y, suspend = n"
Na koniec uruchom to w cmd, które: „catalina.bat jpda start”
W IDE utwórz konfigurację zdalnego debugowania i ustaw hosta na powiązany adres IP serwera i port na 8000.
źródło
W przypadku wersji apache-tomcat-8.5.28 po prostu zrób to,
Jako domyślne ustawienia już skonfigurowane dla nas w catalina.bat jako
Więc nie ma potrzeby żadnej innej konfiguracji. A kiedy wykonasz polecenie catalina.bat jpda start, zobaczysz, że port debugowania 8000 jest otwarty.
źródło
Zobacz tę odpowiedź na problemy, które miałem z Java 8 i Tomcat 9: Zdalne debugowanie Java (JPDA) nie działa dla mnie w Tomcat 9
Jest to podobne do ostrzeżenia @ DAB, a jego rozwiązanie jest prawdopodobnie bezpieczniejsze.
źródło
W przypadku apache-tomcat-8.5.28
zmodyfikuj
JDPA_OPTS
jak poniżej, a następnie uruchom jakcatalina.bat jpda start
źródło