Debugging Jarak Jauh dengan IntelliJ IDEA

1. Perkenalan

Debugging jarak jauh memberi pengembang kemampuan untuk mendiagnosis bug unik di server atau proses lain. Ini menyediakan sarana untuk melacak bug runtime yang mengganggu tersebut dan mengidentifikasi hambatan kinerja dan penurunan sumber daya.

Dalam tutorial ini, kita akan melihat debugging jarak jauh menggunakan JetBrains IntelliJ IDEA. Mari persiapkan aplikasi sampel kita terlebih dahulu dengan mengubah JVM.

2. Konfigurasi JVM

Kami akan menggunakan aplikasi sampel Penjadwal Musim Semi untuk dengan mudah menghubungkan dan menambahkan breakpoint ke tugas yang dijadwalkan secara teratur.

Selain itu, IntelliJ IDEA menyediakan parameter JVM kami sebagai bagian dari konfigurasi :

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

2.1. Parameter JVM

Selain konfigurasi Java Debug Wire Protocol (JDWP) - jdwp = transport = dt_socket - kita melihat parameter server , suspend , dan alamat .

The Server parameter mengkonfigurasi JVM sebagai target untuk debugger kami. The menangguhkan parameter memberitahu JVM untuk menunggu klien debugger untuk menghubungkan sebelum startup. Terakhir, parameter alamat menggunakan host karakter pengganti dan port yang dideklarasikan.

Jadi, mari kita membangun aplikasi penjadwal:

mvn clean package

Dan sekarang mari kita mulai aplikasi, termasuk parameter -agentlib: jdwp :

java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \ target/gs-scheduling-tasks-0.1.0.jar

Buka terminal apa saja dan jalankan perintah. Dengan aplikasi kita dimulai, sekarang beralih ke IntelliJ.

3. Jalankan Konfigurasi di IntelliJ IDEA

Selanjutnya, di IntelliJ, kami membuat Konfigurasi Jalankan baru untuk debugging jarak jauh:

Sekarang aplikasi kita sedang berjalan, mari kita mulai sesi debugging jarak jauh dengan mengklik tombol Debug .

4. Debugging Jarak Jauh

Selanjutnya, kami membuka file ScheduleTask dan menempatkan breakpoint pada baris 36 yang ditunjukkan di sini:

public void reportCurrentTime() { log.info("The time is now {}", dateFormat.format(new Date())); }

Karena tugas dijalankan setiap lima detik, itu akan segera berhenti setelah ditambahkan. Hasilnya, sekarang kita dapat menelusuri seluruh aplikasi.

Untuk masalah startup aplikasi, kami mengubah flag suspend menjadi n dan menempatkan breakpoint di metode utama Aplikasi.

4.1. Batasan

Terkadang logging dan output membingungkan kita saat melakukan debug jarak jauh. Log tidak akan dikirim ke konsol IDE, sehingga file log eksternal dapat digunakan dan dipetakan ke IDE untuk kemampuan debugging yang lebih kuat.

Ingat juga bahwa meskipun proses debug jarak jauh adalah alat yang sangat andal, lingkungan produksi bukanlah target yang cocok untuk debugging .

5. Kesimpulan

Seperti yang kita bahas dalam artikel ini, debugging jarak jauh dengan IntelliJ mudah diatur dan digunakan dalam beberapa langkah singkat.

Kami melihat cara mengonfigurasi JVM aplikasi kami untuk debugging serta beberapa batasan alat penting ini di kotak alat pengembang kami.

Aplikasi sampel dapat ditemukan di GitHub.