Am o aplicație java care rulează pe linux. Am rula aplicația java folosind următoarele:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Am deschis portul 4000 pentru TCP pe această mașină Linux. Eu folosesc eclipse de la Windows XP mașină și încercați să vă conectați la această aplicație. Am deschis portul din windows, de asemenea.
Ambele masini sunt pe LAN dar nu pot't par să se conecteze debugger pentru aplicația Java. Ce fac gresit?
Edit: am observat că unii oameni sunt de tăiere și lipire invocarea aici. Răspunsul inițial am dat relevante pentru OPERAȚIUNE numai. Aici's o mai modern stil de invocare (inclusiv utilizarea mai convenționale portul 8000):
java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>
Original răspunsul urmează.
Încercați acest lucru:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Două puncte de aici:
Pentru JDK 1.3 sau mai devreme :
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Pentru JDK 1.4
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Pentru noi JDK :
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006
Vă rugăm să schimbați numărul de port bazat pe nevoile dumneavoastra.
De la 5.0 începând cu cea de -agentlib:jdwp opțiune este utilizată pentru a încărca și de a specifica opțiuni pentru JDWP agent. Pentru versiuni anterioare 5.0,- Xdebug și -Xrunjdwp opțiuni sunt utilizate (5.0 punerea în aplicare, de asemenea, sprijină -Xdebug și -Xrunjdwp opțiuni, dar mai nou-agentlib:jdwp opțiune este de preferat ca JDWP agent 5.0 folosește JVM TI interfață pentru VM, mai degrabă decât mai în vârstă JVMDI interface)
Încă un lucru de remarcat, de JVM interfață Instrument de documentare:
JVM TI a fost introdus la JDK 5.0. JVM TI înlocuiește Mașina Virtuală Java Profiler Interface (JVMPI) și Java Virtual Machine Interfață de Depanare (JVMDI) care, ca de JDK 6, nu mai sunt furnizate.
Pașii de mai jos:
A se vedea ghid pas cu Pas pe Java remote debugging pentru detalii complete.
Răspuns care acoperă Java >= 9:
Pentru Java 9+, JVM opțiune are nevoie de o mică schimbare prin prefixarea adresa cu adresa IP a mașinii de gazduire JVM, sau doar *
:
-agentlib:jdwp=transport=dt_socket,server=y,address=*:8000,suspend=n
Acest lucru se datorează unei schimbări a remarcat în https://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435.
Pentru Java < 9, numărul de port este suficient să se conecteze.
Acest lucru este cum ar trebui să configurare Eclipse Debugger pentru depanarea la distanță:
Eclipsa Setări:
1.Faceți clic pe Butonul Run 2.Selectați Depanare Configurații 3.Selectați "de la Distanță Aplicație Java" 4.Noua Configurație
Pentru JBoss:
1.Schimba /cale/toJboss/jboss-eap-6.1/bin/independent.conf
în vm, după cum urmează:
Decomentați linia următoare prin eliminarea #:
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"
Pentru Tomcat :
În catalina.bat file :
Pasul 1:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Pasul 2:
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
Pasul 3: Executați Tomcat din command prompt ca de mai jos:
catalina.sh jpda start
Apoi, aveți nevoie pentru a seta critice în Java clase ai dorinta de pentru a depana.
Am'd dori să sublinieze că ordinul de argumente este important.
Pentru mine, `java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,adresa=8000 -borcan app.jar comandă deschide depanatorul port,
dar `java-jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,adresa=8000 comandă nu - 't.
Cea mai bună opțiune de depanare este de a crea busteni si analiza busteni. Dar, în unele cazuri, avem nevoie pentru a depana aplicația web implementat pe server.