Jawaban:
Saya memiliki artikel ini ditandai pada pengaturan ini untuk Java 5 dan di bawah.
Pada dasarnya jalankan dengan :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Untuk Java 5 dan di atasnya , jalankan dengan:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
Sebelum Java 5.0, gunakan -Xdebug
dan -Xrunjdwp
argumen. Opsi ini masih akan berfungsi di versi yang lebih baru, tetapi akan berjalan dalam mode yang diartikan sebagai ganti JIT, yang akan lebih lambat.
Dari Java 5.0, lebih baik menggunakan -agentlib:jdwp
opsi tunggal:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Opsi -Xrunjdwp
atau agentlib:jdwp
argumen adalah:
transport=dt_socket
: berarti cara yang digunakan untuk terhubung ke JVM (soket adalah pilihan yang baik, dapat digunakan untuk men-debug komputer yang jauh)address=8000
: Port TCP / IP terbuka, untuk terhubung dari debugger, suspend=y
: jika 'y', beri tahu JVM untuk menunggu sampai debugger dilampirkan untuk memulai eksekusi, jika tidak (jika 'n'), segera mulai eksekusi.Xrunjdwp
ditinggalkan (atau dihapus?) Mengapa kita harus mengambilnya agentlib:jdwp
?
-Xdebug -Xrunjdwp
ketika men-debug proyek Maven, dan mereka berjalan seperti mereka JIT.
Karena Java 9.0 JDWP hanya mendukung koneksi lokal secara default. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Untuk debugging jarak jauh seseorang harus menjalankan program dengan *:
alamat:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Untuk java 1.5 atau lebih besar:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Untuk java 1.4:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Untuk java 1.3:
java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Ini adalah output dari program sederhana:
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
menentukan port yang memungkinkannya untuk di-debug
** Aplikasi Debug Spring Boot dengan Maven:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
Inilah solusi termudah.
Ada banyak konfigurasi khusus lingkungan yang diperlukan jika Anda menggunakan Maven. Jadi, jika Anda memulai program Anda dari maven, jalankan saja mvnDebug
alih-alih mvn
, itu akan memulai aplikasi Anda dengan konfigurasi debugging jarak jauh. Sekarang Anda bisa melampirkan debugger pada port 8000.
Ini akan mengurus semua masalah lingkungan untuk Anda.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Di sini kita hanya menggunakan Socket Attaching Connector, yang diaktifkan secara default ketika transport dt_socket dikonfigurasi dan VM berjalan dalam mode debugging server.
Untuk lebih jelasnya Anda bisa merujuk ke: https://stackify.com/java-remote-debugging/
*:1044
mengaktifkan debugging jarak jauh dari komputer mana pun