Risposte:
Ho questo articolo segnalibro su come impostare questa funzione per Java 5 e sotto.
Fondamentalmente eseguirlo con :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Per Java 5 e versioni successive , eseguilo con:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
Prima di Java 5.0, usare -Xdebug
e -Xrunjdwp
argomenti. Queste opzioni funzioneranno ancora nelle versioni successive, ma verranno eseguite in modalità interpretata anziché in JIT, che sarà più lenta.
Da Java 5.0, è meglio usare la -agentlib:jdwp
singola opzione:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Le opzioni -Xrunjdwp
o gli agentlib:jdwp
argomenti sono:
transport=dt_socket
: indica il modo utilizzato per connettersi a JVM (socket è una buona scelta, può essere utilizzato per il debug di un computer distante)address=8000
: Porta TCP / IP esposta, per connettersi dal debugger, suspend=y
: se 'y', dire alla JVM di attendere che il debugger sia collegato per iniziare l'esecuzione, altrimenti (se 'n'), avvia l'esecuzione immediatamente.Xrunjdwp
deprecato (o rimosso?) Perché dovremmo sceglierlo agentlib:jdwp
?
-Xdebug -Xrunjdwp
durante il debug dei progetti Maven e funzionano come se fossero JIT.
Poiché Java 9.0 JDWP supporta solo le connessioni locali per impostazione predefinita. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Per il debug remoto è necessario eseguire il programma con l' *:
indirizzo in:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Per java 1.5 o versioni successive:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Per java 1.4:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Per java 1.3:
java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Ecco l'output di un semplice programma:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar
address
specifica la porta alla quale consentirà il debug
** Debug Spring Boot app con Maven:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
Ecco la soluzione più semplice.
Ci sono molte configurazioni speciali dell'ambiente necessarie se stai usando Maven. Quindi, se avvii il tuo programma da Maven, esegui semplicemente il mvnDebug
comando anziché mvn
, si occuperà di avviare la tua app con il debug remoto configurato. Ora puoi semplicemente collegare un debugger sulla porta 8000.
Si occuperà di tutti i problemi ambientali per te.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Qui usiamo solo un Socket Attaching Connector, che è abilitato di default quando il trasporto dt_socket è configurato e la VM è in esecuzione nella modalità di debug del server.
Per maggiori dettagli puoi consultare: https://stackify.com/java-remote-debugging/
*:1044
per abilitare il debug remoto da qualsiasi computer