Rumah  >  Artikel  >  hujung hadapan web  >  Penyahpepijatan Java: Panduan Komprehensif

Penyahpepijatan Java: Panduan Komprehensif

Barbara Streisand
Barbara Streisandasal
2024-10-23 06:22:30388semak imbas

Penyahpepijatan ialah kemahiran penting untuk pembangun Java, kerana ia membolehkan anda memeriksa dan menyelesaikan isu dalam kod anda. Sama ada anda menghadapi ralat logik, ranap yang tidak dijangka atau isu prestasi, mengetahui cara untuk menyahpepijat aplikasi Java dengan berkesan adalah penting.

Dalam panduan ini, kami akan meneroka teknik penyahpepijatan Java, alatan dan amalan terbaik yang boleh membantu anda menjejaki pepijat dan meningkatkan kualiti perisian anda.


Jadual Kandungan

  • 1. Memahami Penyahpepijatan
  • 2. Alat Nyahpepijat Java Biasa
  • 3. Penyahpepijatan Asas dalam IDE
    • 3.1. Menetapkan Titik Putus
    • 3.2. Langkah Pelaksanaan
    • 3.3. Periksa Pembolehubah
    • 3.4. Jam Tangan dan Ungkapan
  • 4. Penyahpepijatan Jauh
  • 5. Menyahpepijat dengan Log
  • 6. Teknik Penyahpepijatan Lanjutan
    • 6.1. Titik Putus Pengecualian
    • 6.2. Titik Putus Bersyarat
    • 6.3. Ganti Kod Panas (HCR)
    • 6.4. Penyahpepijatan Benang
  • 7. Amalan Terbaik untuk Menyahpepijat Aplikasi Java
  • 8. Kesimpulan

1. Memahami Penyahpepijatan

Nyahpepijat ialah proses mengenal pasti, menganalisis dan membetulkan pepijat atau ralat dalam kod perisian anda. Di Java, pepijat boleh terdiri daripada ralat sintaks (ditangkap pada masa penyusunan) kepada ralat logik (dikesan semasa masa jalan), kesesakan prestasi atau isu yang timbul hanya dalam keadaan tertentu.

Java Virtual Machine (JVM) menyediakan beberapa ciri penyahpepijatan dan kebanyakan IDE moden, seperti IntelliJ IDEA dan Eclipse, menawarkan alat penyahpepijatan terbina dalam yang membantu pembangun memeriksa gelagat masa jalan aplikasi mereka.


2. Alat Nyahpepijat Java Biasa

Berikut ialah beberapa alatan penyahpepijatan Java yang popular:

  • IDEA IntelliJ: Menawarkan penyahpepijat yang berkuasa dengan ciri seperti titik putus, pemeriksaan berubah-ubah, pelaksanaan langkah demi langkah dan penyahpepijatan jauh.
  • Eclipse IDE: Java IDE yang digunakan secara meluas dengan keupayaan penyahpepijatan yang mantap termasuk penggantian kod panas, penyahpepijatan benang dan penilaian ekspresi.
  • JDB (Penyahpepijat Java): Alat baris arahan yang disediakan oleh JDK yang membolehkan anda menyahpepijat aplikasi Java dalam persekitaran di mana antara muka grafik tidak tersedia.
  • VisualVM: Alat pemantauan dan penyahpepijatan yang boleh memprofilkan aplikasi dan menganalisis penggunaan memori.
  • JProfiler: Alat pemprofilan dan penyahpepijatan komersial untuk pemantauan prestasi dan analisis memori dalam aplikasi Java.
  • JConsole: Digunakan untuk memantau metrik prestasi JVM dan mengesan isu seperti kebocoran memori.

3. Penyahpepijatan Asas dalam IDE

3.1. Menetapkan Titik Putus

Satu titik putus menjeda pelaksanaan program anda pada baris tertentu, membolehkan anda memeriksa keadaan permohonan anda pada ketika itu.

Cara Menetapkan Titik Putus:

  • Dalam IntelliJ IDEA: Klik dalam longkang di sebelah nombor baris yang anda ingin tetapkan titik putus. Titik merah menunjukkan titik putus.
  • Dalam Eclipse: Begitu juga, klik di birai kiri editor kod di sebelah baris yang anda mahu jeda.

Apabila pelaksanaan mencapai titik putus, IDE menghentikan program, membolehkan anda meneroka keadaan semasa pembolehubah dan aliran program.

3.2. Langkah Pelaksanaan

Sebaik sahaja pelaksanaan berhenti pada titik putus, anda boleh melangkah melalui kod anda untuk memahami alirannya:

  • Step Over: Beralih ke baris seterusnya dalam kaedah yang sama, melangkau panggilan kaedah.
  • Langkah Masuk: Memasuki kaedah atau fungsi yang dipanggil.
  • Langkah Keluar: Keluar daripada kaedah semasa dan kembali kepada pemanggil.

3.3. Periksa Pembolehubah

Apabila pelaksanaan program dijeda, anda boleh memeriksa nilai pembolehubah pada masa itu.

  • Dalam kebanyakan IDE, anda boleh menuding pada pembolehubah untuk melihat nilai semasanya.
  • IDE juga menyediakan Anak tetingkap Pembolehubah di mana anda boleh memeriksa semua pembolehubah dalam skop semasa, termasuk pembolehubah tempatan dan ahli kelas.

3.4. Jam Tangan dan Ekspresi

Anda juga boleh mencipta jam tangan untuk menjejak nilai ungkapan atau pembolehubah tertentu. Ini berguna apabila anda ingin melihat bagaimana pembolehubah berubah semasa kod dilaksanakan.


4. Penyahpepijatan Jauh

Penyahpepijatan jauh membolehkan anda menyahpepijat aplikasi yang dijalankan pada mesin atau persekitaran yang berbeza (cth., pelayan pengeluaran) dengan menyambungkan IDE anda kepada JVM jauh.

Langkah untuk Mendayakan Penyahpepijatan Jauh:

  1. Tambahkan pilihan JVM berikut pada aplikasi yang ingin anda nyahpepijat dari jauh:
   -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  • address=5005: Ini ialah port di mana penyahpepijat akan mendengar.
  • suspend=n: Menetapkan ini kepada y akan membuatkan JVM menunggu sehingga penyahpepijat dilampirkan sebelum meneruskan pelaksanaan.
  1. Dalam IDE anda (IntelliJ atau Eclipse):
    • Buat Konfigurasi Penyahpepijatan Jauh.
    • Nyatakan hos dan port (cth., localhost:5005).
    • Mulakan sesi penyahpepijatan jauh dalam IDE.

Ini membolehkan anda memeriksa, menetapkan titik putus dan melangkah melalui kod seolah-olah ia dijalankan secara setempat.


5. Menyahpepijat dengan Log

Pengelogan ialah salah satu cara yang paling biasa dan berkesan untuk nyahpepijat aplikasi, terutamanya dalam persekitaran pengeluaran di mana penyahpepijat tidak boleh dilampirkan.

Java menyediakan rangka kerja pengelogan berikut:

  • Log4j: Pustaka pengelogan popular yang membolehkan anda mengeluarkan log pada tahap yang berbeza (INFO, DEBUG, WARN, ERROR).
  • SLF4J: Fasad pembalakan yang berfungsi dengan pelbagai hujung belakang seperti Log4j dan Logback.
  • java.util.logging: API pengelogan Java terbina dalam.

Contoh penggunaan dengan SLF4J:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClass {
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);

    public static void main(String[] args) {
        logger.info("Application started");
        logger.debug("Debugging value: {}", someVariable);
        logger.error("An error occurred", exception);
    }
}

Pengelogan membantu anda menjejak kelakuan aplikasi tanpa perlu menghentikan aplikasi atau melampirkan penyahpepijat.


6. Teknik Penyahpepijatan Lanjutan

6.1. Titik Putus Pengecualian

Titik putus pengecualian menjeda pelaksanaan apabila jenis pengecualian tertentu dilemparkan, tidak kira di mana ia berlaku dalam kod. Ini berguna untuk mengenal pasti tempat dan sebab pengecualian tertentu dibangkitkan.

Dalam kebanyakan IDE (seperti IntelliJ atau Eclipse):

  • Pergi ke paparan Breakpoints.
  • Tambahkan Titik Putus Pengecualian untuk pengecualian tertentu, seperti NullPointerException.

6.2. Titik Putus Bersyarat

Kadangkala anda ingin menghentikan pelaksanaan hanya apabila syarat tertentu dipenuhi. Titik putus bersyarat membolehkan anda menentukan keadaan (cth., nilai pembolehubah atau keadaan) di mana pelaksanaan harus dihentikan.

Cara menetapkan titik putus bersyarat:

  • Klik kanan pada titik putus dan tambah syarat, seperti x == 5. Program hanya akan berhenti apabila syarat ini benar.

6.3. Ganti Kod Panas (HCR)

Ganti Kod Panas membolehkan anda mengubah suai dan menggunakan perubahan pada kod anda semasa sesi nyahpepijat tanpa memulakan semula aplikasi. Ini amat berguna dalam aplikasi atau persekitaran yang berjalan lama dengan permulaan semula yang kerap mengganggu.

Kebanyakan IDE, seperti IntelliJ dan Eclipse, menyokong HCR semasa menyahpepijat. Walau bagaimanapun, ia mempunyai had: anda tidak boleh mengubah suai struktur kelas (cth., menambah kaedah baharu atau menukar hierarki kelas).

6.4. Penyahpepijatan Benang

Aplikasi Java boleh mempunyai berbilang rangkaian berjalan serentak dan menyahpepijat aplikasi berbilang benang boleh menjadi rumit.

Dalam tetingkap Penyahpepijat IDE anda, anda boleh:

  • Periksa semua utas yang sedang berjalan.
  • Jeda, sambung semula atau tamatkan urutan individu.
  • Tetapkan titik putus khusus untuk utas untuk menganalisis gelagat khusus utas.

7. Amalan Terbaik untuk Menyahpepijat Aplikasi Java

  • Menghasilkan Semula Isu: Sebelum nyahpepijat, pastikan anda boleh menghasilkan semula pepijat atau isu secara konsisten. Ini memudahkan untuk mengesan masalah.
  • Gunakan Pengelogan: Walaupun menggunakan penyahpepijat, log memberikan sejarah peristiwa yang berharga, terutamanya apabila anda berhadapan dengan isu dalam pengeluaran atau persekitaran berbilang benang.
  • Mulakan dengan Titik Putus Mudah: Jangan tetapkan titik putus terlalu banyak pada mulanya. Mulakan dengan memfokus pada kawasan kritikal kod yang anda mengesyaki isu itu berasal.
  • Gunakan Titik Putus Bersyarat: Elakkan menghentikan program tanpa perlu dengan menggunakan syarat pada titik putus untuk menghentikan pelaksanaan hanya apabila kriteria tertentu dipenuhi.
  • Jangan Terlalu Guna Nyahpepijat: Nyahpepijat boleh memakan masa. Kadangkala, berundur dan menyemak kod anda secara logik atau menggunakan ujian boleh membantu menentukan isu dengan lebih cepat.
  • Fokus pada Kes Tepi: Pepijat sering timbul dalam kes tepi, seperti pengendalian nilai nol, ralat luar sempadan atau isu penyegerakan benang.

8. Kesimpulan

Nyahpepijat ialah kemahiran utama untuk setiap pembangun Java. Sama ada anda menggunakan IDE seperti IntelliJ IDEA atau Eclipse, penyahpepijatan jauh persekitaran pengeluaran atau bergantung pada log, memahami alatan dan teknik untuk penyahpepijatan adalah penting. Dengan mengikuti amalan terbaik yang dinyatakan dalam panduan ini dan menguasai teknik penyahpepijatan lanjutan, anda boleh meningkatkan kecekapan anda dalam mengenal pasti dan membetulkan pepijat, yang membawa kepada perisian yang lebih berkualiti dan lebih stabil.

? Pengarang

Java Debugging: A Comprehensive Guide

Sertai Komuniti Telegram Kami || Ikuti saya di GitHub untuk lebih banyak kandungan DevOps!

Atas ialah kandungan terperinci Penyahpepijatan Java: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn