Di bagian ini, cobalah Java Remote Debugging dan rekam hal -hal sederhana untuk memulai. Bahkan jika itu adalah catatan!
Tulis program sederhana dan ketik ke dalam toples dan masukkan ke server jarak jauh untuk dijalankan, mensimulasikan bahwa server jarak jauh sedang berjalan. Ambil Java Calling Shell Script Submission Program pekerjaan sebagai contoh. Kode sumber adalah sebagai berikut (program berikut adalah kode contoh sederhana, tidak peduli dengan spesifikasi kode):
impor java.io.inputStream; kelas publik javashell {public static void main (string [] args) melempar pengecualian {coba {string hibah = "chmod u+x submit-job.sh"; Runtime runtime = runtime.getRuntime (); Proses hibah = runtime.exec (hibah); int resultCode = GrantProc.waitfor (); System.out.println (Hasil); GrantProc = runtime.exec ("./ Submit-job.sh"); RACKCODE = GrantProc.WaitFor (); System.out.println (Hasil); InputStream in = grantproc.getInputStream (); byte [] buffer = byte baru [1024]; kode int; while ((code = in.read (buffer, 0, buffer.length))! = -1) {System.out.print (string baru (buffer, 0, kode)); } / ** * Loop dead mencegah debugger keluar sebelum terhubung (uji fungsi parameter suspend) * / System.out.println ("Script shell telah dieksekusi, dan tugas pencetakan waktunya akan dimulai!"); int i = 0; while (true) {thread.sleep (2000); System.out.println ("Ini adalah" th " + (++ i) +" loop kedua! ");}} Catch (exception e) {System.out.println (" Ini adalah ekskpsi! ");} Akhirnya {}}}Setelah melakukan ke server jarak jauh, jalankan:
Salin kode sebagai berikut: java -xdebug -xnoagent -djava.compiler = tidak ada -xrunjdwp: transport = dt_socket, alamat = 9999, server = y, suspend = y -jar javashell.jar
Program akan diblokir dan menunggu debugger terhubung. Saat ini, kita dapat menggunakan Eclipse untuk debugging jarak jauh:
Klik Debugger untuk menghubungkan dan melacak kode sumber yang akan dijalankan:
Ada output dari jarak jauh, membuktikan bahwa program jarak jauh melacak eksekusi debugger:
Pada titik ini, kami menyelesaikan proses debugging. Selanjutnya, coba kasus di mana parameter menangguhkan = n:
Salin kode sebagai berikut: java -xdebug -xnoagent -djava.compiler = tidak ada -xrunjdwp: transport = dt_socket, alamat = 9999, server = y, suspend = n -jar javashell.jar
Pada saat ini, Anda akan menemukan bahwa program jarak jauh tidak memblokir dan menunggu koneksi debugger debugger, tetapi program tersebut dijalankan secara normal:
Pada saat ini, kita dapat menggunakan debugger Eclipse jarak jauh untuk debugging jarak jauh, tetapi harus dicatat bahwa breakpoint lokal kita hanya dapat dipukul pada kode jarak jauh yang belum dieksekusi atau kode yang sedang dieksekusi. Misalnya, kita dapat memecahkan poin di loop dead (loop dead adalah kode yang sedang dieksekusi sepanjang waktu):
Kemudian mulailah debugger:
Tetap di breakpoint. Kemudian ikuti posisi breakpoint untuk melanjutkan pekerjaan debug kami. Pada titik ini, Anda harus mengetahui peran parameter suspend:
Dalam parameter debug JVM, ada parameter yang disebut "Suspend", yang memiliki dua nilai, "y" atau "n".
Jika Anda ingin men -debug di awal, atur parameter ke "Suspend = Y", sehingga gerhana akan terhubung dari jarak jauh ke aplikasi Java.
Jika Anda ingin menjalankan proyek terlebih dahulu dan kemudian menghubungkan Eclipse, Anda dapat mengatur parameter ke "Suspend = N", sehingga aplikasi Java akan berjalan secara normal, dan kemudian Eclipse akan memulai koneksi jarak jauh.
Lebih banyak detail parameter:
-Xdebug mengaktifkan debugging.
-Xnoagent Nonaktifkan debugger Sun.tools.debug default.
-Djava.compiler = Tidak ada yang melarang pemuatan kompiler JIT.
-Xrunjdwp memuat contoh eksekusi referensi JPDA dari JDWP.
Transportasi digunakan untuk berkomunikasi antara debugger dan proses yang digunakan oleh VM.
transfer soket dt_socket.
DT_SHMEM Transfer memori bersama, hanya Windows.
Server = Y/N Apakah VM perlu dieksekusi sebagai server debugging.
Alamat = 3999 Nomor port server debug, nomor port yang digunakan oleh klien untuk terhubung ke server.
SUSPEND = Y/N Apakah akan memulai VM setelah klien debug membuat koneksi.
Eclipse Debug Shortcut Keys:
F5 melangkah masuk
F6 melangkah
F7 Step Out
F8 Lanjutkan ke breakpoint berikutnya
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.