Sebagai pengembang, perlu untuk menguasai keterampilan debugging di lingkungan pengembangan. Saat menulis program Java, kita sering menghadapi berbagai masalah yang tidak dapat dijelaskan. Untuk mendeteksi di mana program ini bermasalah, kita sering perlu menambahkan log untuk melihat nilai variabel, jadi debugging sangat merepotkan. Misalkan saya menghabiskan 1 jam sehari men -debug aplikasi saya, itu akan menjadi banyak waktu jika menumpuk. Untuk alasan ini, gunakan waktu ini untuk menilai dan memahami semua fitur yang membuat kami men -debug dengan lebih nyaman. Itu bisa menghemat waktu Anda dan juga akan membuat hidup Anda lebih nyaman dan santai.
1. Tampilan debug
Jendela yang paling umum digunakan dalam debugging adalah:
| jendela | menjelaskan |
|---|---|
| Jendela debug | Terutama menampilkan tumpukan panggilan metode utas saat ini, serta jumlah baris kode (kode dengan informasi debugging) |
| Jendela breakpoints | => Jendela daftar breakpoint, yang dapat memfasilitasi penambahan breakpoint, mengatur kondisi breakpoint, menghapus breakpoint, dll. |
| Jendela Variabel | => Menampilkan variabel lokal dari metode saat ini, metode non-statis, termasuk aplikasi ini, dapat memodifikasi dan mengubah nilai variabel |
| Jendela Pengeditan Kode | => Tak perlu dikatakan lebih banyak |
| Jendela konsol output | => Log dan konten output lainnya. Selama debugging, Anda dapat mengatur tingkat perhatian komponen ke sedikit lebih rendah untuk mendapatkan beberapa informasi output. |
Selain itu, jendela tambahan adalah:
| jendela | menjelaskan |
|---|---|
| Jendela ekspresi ekspresi | => Tulis ekspresi data yang perlu Anda amati, atau memodifikasi nilai meter |
| Etalase | => Dapat menjalankan blok kode, konten output, dll. Di tampilan |
| Garis Besar Jendela Garis Besar | => Lihat metode, variabel, dll. Dari kelas saat ini |
| Ketik Jendela Hirarki | => Periksa tingkat warisan kelas saat ini, termasuk antarmuka implementasi dan tingkat warisan kelas |
| Metode Call Relational Call Hierarchy Window | => Periksa metode mana yang disebut, kelas mana yang disebut, dan baris mana yang merupakan metode yang sesuai dapat dibuka secara langsung |
| Jendela Pencarian Hasil Pencarian | => Menggabungkan tombol pintas, Anda dapat melihat lokasi kode yang dirujuk atau didefinisikan dalam ruang kerja, proyek, dan set kerja. |
1) Tampilan penuh jendela:
2) Tampilan Debug (Tampilan Stack Thread):
Tampilan Debug memungkinkan Anda untuk mengelola program yang sedang debug dan berjalan di meja kerja. Ini menunjukkan bingkai tumpukan utas yang ditangguhkan dalam program yang Anda debugging, dan setiap utas dalam program muncul sebagai simpul pohon. Dia menunjukkan proses untuk setiap target yang sedang berjalan. Jika utas ditangguhkan, bingkai tumpukannya ditampilkan sebagai elemen anak. Berikut adalah beberapa tombol debug yang umum digunakan:
1. Menunjukkan bahwa implementasi saat ini terus berjalan hingga breakpoint berikutnya, dan kunci pintasan adalah F8.
2. Itu berarti mengganggu seluruh proses
3. Ini berarti memasuki metode saat ini, dan kunci pintasan adalah F5.
4. Ini berarti menjalankan baris kode berikutnya, dan kunci pintasannya adalah F6.
5. Ini berarti keluar dari metode saat ini dan kembali ke lapisan panggilan. Kunci pintasannya adalah F7.
6. Mewakili tumpukan utas saat ini, dari mana Anda dapat melihat kode mana yang sedang berjalan, dan seluruh proses panggilan, serta nomor baris kode
Pendahuluan Detail:
Lewati semua breakpoint: atur semua breakpoint untuk dilewati. Setelah pengaturan lewati semua breakpoint, akan ada tebasan pada semua breakpoint, menunjukkan bahwa breakpoint akan dilewati dan utas tidak akan ditangguhkan di breakpoint.
Jatuhkan ke Frame: Perintah ini memungkinkan program untuk kembali ke awal metode saat ini dan mulai eksekusi lagi. Anda dapat mengeksekusi ulang bingkai java stack. Anda dapat memilih bingkai tumpukan yang ditentukan dan kemudian klik drop ke bingkai, sehingga Anda dapat memasukkan kembali bingkai tumpukan yang ditentukan. Perhatikan penggunaan drop ke bingkai:
1. Tidak dapat masuk ke metode dalam Stack Metode yang sudah dieksekusi.
2. Saat jatuh ke bingkai tumpukan, nilai asli dari data global tidak akan diubah. Misalnya, elemen yang mengandung verter tidak akan dihapus.
Langkah Filter: Fungsi ini relatif sederhana. Ketika kami ingin mengabaikan beberapa kelas yang tidak kami perhatikan saat men -debug, kami dapat mengaktifkan filter langkah untuk penyaringan. Program ini akan terus mengeksekusi sampai posisi atau breakpoint tanpa filter ditemui. Fungsi Langkah Filter terdiri dari empat item: Gunakan filter langkah, edit filter langkah, jenis filter, dan paket filter. Operasi spesifiknya adalah sebagai berikut:
Langkah 1: Windows -> Preferensi -> Java -> Debug -> Langkah Penyaringan.
Langkah 2: Pilih 'Gunakan Filter Langkah'
Langkah 3: Pilih opsi yang diinginkan di layar. Anda dapat menambahkan beberapa kode di basis kode Anda sendiri.
Langkah 4: Klik 'Terapkan'
Pada prinsipnya, perintah Edit Langkah Filter digunakan untuk mengonfigurasi aturan filter langkah, sementara jenis filter dan paket filter merujuk ke jenis Java yang difilter dan paket Java masing -masing.
Langkah Pengembalian: bangkit dari metode saat ini. Selama pelaksanaan metode yang dipanggil, menggunakan langkah pengembalian akan melompat keluar dari metode dan kembali ke metode yang memanggil metode setelah menjalankan semua kode dari metode saat ini.
Langkah over: Saat menjalankan satu langkah, ketika menemukan subfungsi dalam fungsi, itu tidak akan memasukkan subfungsi untuk melakukan satu langkah, tetapi akan menghentikan seluruh eksekusi subfungsi, yaitu, seluruh subfungsi diambil sebagai satu langkah.
Langkah ke: Langkah ke: Masuklah, masukkan dan lanjutkan untuk masuk saat menemukan subfungsi.
Lanjutkan: Memulihkan utas yang dijeda dan melompat langsung dari posisi saat ini ke posisi breakpoint berikutnya.
Tangguhkan: Jeda utas yang dipilih, dan Anda dapat menelusuri atau memodifikasi kode, memeriksa data, dll.
Eclipse mendukung suspensi utas dan pemulihan melalui penangguhan dan resume. Secara umum, SUSPEND cocok untuk men-debugging program multi-threaded. Ketika kita perlu melihat bingkai tumpukan dan nilai variabel dari utas tertentu, kita dapat menangguhkan utas melalui perintah Suspend. Resume digunakan untuk pemulihan.
Ada dua jenis resume yang perlu diperhatikan:
Yang pertama adalah memodifikasi kode program selama proses debugging, menyimpannya, dan klik resume, dan program akan ditangguhkan sementara di breakpoint.
Yang kedua adalah bahwa ketika program melempar pengecualian, menjalankan resume dan program juga akan ditangguhkan sementara di breakpoint.
Putusan: Eclipse mengakhiri debugging program lokal melalui perintah penghentian.
Disconnect: Eclipse Menggunakan Perintah Putuskan untuk Menghentikan Koneksi Soket ke JVM jarak jauh.
1. Debugging dan pelaksanaan
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 6.4 | Info Langkah | F5 | -> Langkah ke (jika ada panggilan metode, itu akan memasukkan metode panggilan untuk debugging); |
| 6.4 | Melangkahi | F6 | -> Lewati langkah demi langkah (dalam panggilan metode apa pun yang tidak masuk ke baris, secara langsung jalankan baris kode saat ini dan lompat ke baris berikutnya); |
| 6.4 | Langkah kembali | F7 | -> Return dalam satu langkah (jalankan metode saat ini, keluarkan metode saat ini dari tumpukan panggilan, dan kembali ke lokasi panggilan di mana metode saat ini dipanggil); |
| 6.5 | Melanjutkan | F8 | -> melanjutkan eksekusi normal (sampai breakpoint berikutnya ditemui); |
| 7.4 | Lari ke baris | Ctrl+r | -> Jalankan ke garis saat ini (semua breakpoint di tengah akan diabaikan dan dijalankan ke garis di mana kursor saat ini berada); |
| 6.3 | Jatuhkan ke bingkai | tidak ada | -> Kembali ke awal metode yang ditentukan, fungsi ini cukup bagus. Klik kanan metode pada Stack panggilan metode dan pilih Drop to Frame untuk mengeksekusi dari awal metode, misalnya, eksekusi ulang metode ini. Anda dapat menggunakan drop untuk membingkai metode ini untuk mengeksekusi kembali dari baris pertama metode ini. Tentu saja, untuk metode dengan efek samping, seperti operasi basis data, mengubah konten objek dari parameter yang dilewatkan, dll., Ini mungkin eksekusi ulang konten konten yang Anda inginkan. |
| 6.1+6.2 | Salin tumpukan | tidak ada | -> Salin informasi tumpukan utas saat ini |
Jika Anda perlu mengecualikan beberapa kelas, paket, dll. Selama debugging, Anda dapat menggunakan pengaturan filter Langkah Edit.
Properti A6: Informasi startup proses Java, termasuk parameter startup konsol, parameter lingkungan, dll. Jika ada masalah dengan parameter startup parameter, Anda dapat memeriksa apakah parameter startup yang sebenarnya di sini salah. Anda juga dapat melihat opsi yang relevan untuk mesin virtual untuk mendukung debugging.
2. Penonton Data
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 7.4 | Memeriksa | Ctrl+Shift+i | -> Lihat variabel yang dipilih, nilai ekspresi atau hasil eksekusi, tekan Ctrl+Shift+I lagi untuk menambahkan ekspresi atau nilai saat ini ke jendela Ekspresi untuk melihat; |
| 7.4 | Menampilkan | Ctrl+Shift+d | -> Menampilkan variabel yang dipilih, nilai ekspresi atau hasil eksekusi. Tekan Ctrl+Shift+D lagi untuk menambahkan ekspresi atau nilai saat ini ke jendela tampilan untuk ditampilkan; |
| 7.4 | Menjalankan | ctrl+u | -> Jalankan ekspresi seleksi; |
| 7.4 | Lari ke baris | Ctrl+r | -> Jalankan ke garis saat ini (semua breakpoint di tengah akan diabaikan dan dijalankan ke garis di mana kursor saat ini berada); |
| 7.3 | Semua contoh | Ctrl+shift+n | -> Lihat semua objek dari kelas yang dipilih, fungsi ini sangat baik; |
| 7.3 | Jumlah contoh | tidak ada | -> Lihat jumlah semua objek di kelas yang dipilih; |
| 7.4 | Jam tangan | tidak ada | -> Tambahkan variabel dan ekspresi saat ini ke jendela Ekspresi; |
3) Tampilan Variabel (Tampilan Variabel)
1. Untuk tampilan nama variabel, tampilkan semua variabel instan dan variabel lokal yang dapat diakses di baris kode saat ini.
2. Menampilkan semua nilai variabel
3. Nilai variabel dapat diubah melalui jendela ini
Variabel tampilan menampilkan informasi variabel yang terkait dengan bingkai tumpukan yang dipilih dalam tampilan debug. Saat men -debug program Java, variabel dapat memilih untuk menampilkan informasi yang lebih rinci di panel detail. Selain itu, objek Java juga dapat menampilkan nilai properti yang dikandungnya. Pilih variabel di jendela ini dan klik kanan untuk melakukan banyak operasi, operasi utamanya adalah sebagai berikut:
Semua contoh: Buka kotak dialog untuk menampilkan semua contoh kelas Java. Menggunakan fungsi ini membutuhkan mesin virtual Java untuk mendukung pengambilan instance.
Semua referensi :: Buka kotak dialog untuk menampilkan semua objek Java yang merujuk variabel.
Nilai Ubah :: Ubah nilai variabel. Fungsi ini dapat digunakan bersama dengan drop to frame untuk debugging program. Gunakan dua fungsi ini alih-alih kembali-debug
Salin Variabel: Salin nilai variabel, terutama ketika nilai variabel sangat panjang (seperti data JSON), fungsi ini berguna.
Temukan: Terkadang ketika ada banyak variabel di kelas, Anda dapat mencari.
4) Tampilan Breakpoints (Tampilan Breakpoint)
1. Tunjukkan semua breakpoint
2. Bayangkan port yang dipilih di jendela saat ini 1 dan klik Aktifkan lagi.
3. Breakpoint Eksepsi
Tampilan Breakpoints akan mencantumkan semua breakpoint yang Anda atur dalam interval kerja saat ini. Klik dua kali breakpoint untuk memasuki lokasi breakpoint dalam program. Anda juga dapat mengaktifkan atau menonaktifkan breakpoint, menghapus, menambahkan yang baru, dan mengelompokkannya berdasarkan kelompok kerja atau jumlah hit point. Ada dua teknik yang sangat berguna saat menggunakan breakpoint:
Hit Count: Ini menentukan berapa kali segmen kode dijalankan di breakpoint. Yang paling khas adalah loop. Jika suatu loop akan dieksekusi 10 kali dan utas ditangguhkan, maka nilai jumlah hit adalah 10, dan loop saat ini akan digantung ketika dieksekusi ke -9.
Bersyarat: Seperti namanya, itu adalah penilaian bersyarat. Misalnya, ketika kita perlu melulung variabel i == 10, utas menangguhkan, maka kondisi diatur ke i == 10, dan pilih SUSPEND saat "benar".
Jika jumlah hit dan kondisional dipilih di atas, itu akan tidak valid jika pengaturan ekspresi dan nilai tidak masuk akal. Jika Anda memilih penangguhan saat nilai berubah, kondisional dapat digantung ketika nilai variabel berubah.
5) Tampilan Ekspresi (Tampilan Ekspresi)
1. Ekspresi
2. Klik di sini untuk menambahkan ekspresi baru
Untuk menemukan nilai ekspresi dalam editor perspektif debug, pilih seluruh baris dengan set breakpoints, dan pilih opsi inspect di menu konteks. Ekspresi dievaluasi dalam konteks bingkai tumpukan saat ini, dan hasilnya ditampilkan dalam tampilan ekspresi jendela tampilan. Misalnya, jika saya ingin menghitung nilai variabel A+B, maka saya dapat menambahkan ekspresi ke tampilan ekspresi: a+b
6) Tampilan tampilan
Anda dapat menggunakan tampilan ini untuk memasukkan atau menghitung beberapa kode baru. Kode ini dijalankan dalam konteks lokasi debug saat ini, yang berarti Anda dapat menggunakan semua variabel dan bahkan asisten konten. Untuk mengeksekusi kode Anda, cukup tandai dan gunakan menu klik kanan atau Ctrl+U (Execute) atau Ctrl+Shift+I (periksa)
7) Kode Melihat Jendela Auxiliary
1. Tampilan Kode:
Tampilan kode, digunakan untuk menampilkan kode tertentu. Bagian hijau mengacu pada kode yang saat ini sedang dieksekusi
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 11.1 ~ 11.5 | Hirarki tipe cepat | ctrl+t | Periksa tingkat warisan kelas dan antarmuka saat ini. Saat masuk secara default, subkelas dari warisan/implementasi kelas/metode saat ini ditampilkan, dan sub-antarmuka 11.1 ditampilkan; Ctrl+t lagi, superclass/antarmuka 11.2 warisan/implementasi kelas saat ini dan antarmuka akan ditampilkan. Selama debugging, fungsi ini sering digunakan untuk melihat kelas implementasi 11.4 pada metode panggilan antarmuka atau kelas abstrak, dan secara langsung menavigasi ke metode implementasi yang sesuai 11.5. |
| Garis besar | Ctrl+o | Lihat garis besar kelas saat ini, termasuk metode, atribut, dll.; itu sedikit berguna; | |
| deklarasi terbuka | F3 | Lihat definisi variabel, sifat, dan metode |
2. Call Hierarchy Window:
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 12.1 ~ 12.2 | Hierarki panggilan terbuka | CTRL+ALT+H. | Periksa metode yang disebut level, Anda dapat melihat di mana metode saat ini disebut 12.1, atau metode saat ini memanggil kelas metode lain 12.2 |
3. JENIS TYPE HIERARCHY:
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 13.1 ~ 13.4 | Hirarki Jenis Terbuka | F4 | Periksa tingkat warisan, Anda dapat melihat tingkat warisan kelas, termasuk kelas induk kelas anak 13.1, atau level warisan antarmuka 13.2 yang diimplementasikan oleh kelas. Garis besar kelas 13.3 dan 13.4 akan ditampilkan di sebelah kanan sesuai dengan kelas/antarmuka yang dipilih; 13.3 dapat memilih apakah akan menampilkan properti, metode, dll. Dari antarmuka kelas induk/induk. |
4. Jendela Pencarian:
| tanda | Fungsi | Kunci Pintasan | menggambarkan |
|---|---|---|---|
| 14.1 | Deklarasi | Ctrl+g | Metode yang sama tanda tangan didefinisikan dalam ruang kerja dan dalam paket JAR pihak ketiga 14.1 |
| 14.2 | Referensi | Ctrl+shif+g | Variabel, properti, dan metode yang saat ini dipilih dirujuk dalam ruang kerja dan dalam paket JAR pihak ketiga 14.2 |
| 14.3 | Ctrl+Shift+U. | Lihat di mana variabel, sifat, dan metode muncul di kelas saat ini14.3 | |
| 14.4 | Implement | Lihat Kelas 14.8 yang mengimplementasikan antarmuka saat ini | |
| 14.4 ~ 14.7 | Metode tampilan | Anda dapat memilih metode tampilan yang berbeda dan melihat gambar untuk detailnya |
2. Debug
1. Setel breakpoint
Dalam file kode sumber, pada baris yang ditandai di depan baris kode yang ingin Anda atur breakpoint, klik dua kali tombol mouse kiri untuk mengatur breakpoint, dan klik dua kali lagi pada posisi yang sama untuk membatalkan breakpoint. Terkadang kami masih memiliki kebutuhan ini, yaitu, saya tidak ingin menjalankan baris kode demi baris. Misalnya, loop untuk loop lebih dari 1.000 kali. Saya hanya ingin membiarkan utas digantung untuk debugging pada ke -500 kalinya. Saat ini, kita dapat menggunakan breakpoint bersyarat. Set Breakpoint Kondisi: Kita dapat mengatur kondisi pemicu untuk breakpoint ini. Setelah kondisi tertentu terpenuhi, kita dapat mulai men -debugging. Anda dapat mengklik kanan breakpoint dan memilih Properti Breakpoint untuk memasukkan halaman Pengaturan Breakpoint. Ketika kami berbicara tentang tampilan breakpoint, kami mempelajari penggunaan jumlah hit dan bersyarat. Di sini kita dapat mengatur kondisi dan jumlah eksekusi.
1.1) Jenis Jenis Breakpoint dan Jendela Breakpoint
Ada lima jenis breakpoint yang dapat ditetapkan selama debugging:
1. Breakpoint Baris: Breakpoint bersyarat, seperti namanya, adalah breakpoint dengan kondisi tertentu. Hanya ketika kondisi yang ditetapkan oleh pengguna dipenuhi akan kode berhenti ketika berjalan ke breakpoint.
2. Metode Breakpoints: Hal khusus tentang Breakpoint Metode adalah bahwa mereka dapat dipukul dalam kode sumber JDK. Karena JDK menghapus informasi debugging selama kompilasi, breakpoint biasa tidak dapat dipukul di dalam, tetapi metode breakpoint dimungkinkan. Anda dapat melihat tumpukan panggilan metode melalui metode ini.
3. Amati Breakpoints (Tonton Perubahan Akses Variabel Anggota-BreakPoints)
4. Breakpoint Eksepsi
5. Breakpoint Load Class
Pengaturan masing -masing jenis breakpoint sedikit berbeda. Anda dapat mengklik kanan pada breakpoint -> Properti Breakpoint untuk mengaturnya, tetapi umumnya ada antarmuka pengaturan cepat di jendela Breakpoint. Ada lebih banyak filter di properti breakpoint, yang sebenarnya tidak berguna dan tidak terlalu berguna.
Kunci Pintasan Terkait Breakpoint:
| Kunci Pintasan | menjelaskan |
|---|---|
| Ctrl+Shift+b | Breakpoint besar/batal breakpoint di kursor |
| Ctrl+Alt+b | Abaikan semua breakpoint |
| Alt+Shift+Q, b | Aktifkan jendela Breakpoint |
1. Line Breakpoint: Break Points 1.1 dan 1.4 pada baris tertentu dalam metode ini. Breakpoint garis dapat mengatur kondisi suspending Thread/VM 1.3 dan jumlah akses 1.2.
Kondisi dalam 1.3 adalah bahwa ketika musim semi mendaftarkan definisi kacang (registerbeandefinition), jika itu adalah org.springframework.demo.mybean, utas akan ditangguhkan dan Anda dapat memulai debugging langkah demi langkah.
Untuk penggunaan jumlah hit 1.2, umumnya ada di loop. Jika ada masalah dengan pemrosesan objek ke-n, atur hit hit = N. Selama re-debug, akan lebih mudah untuk menghentikan debugging ketika jumlah loop yang perlu didebug.
2. Metode Breakpoints: Breakpoints 2.1 dan 2.2 pada metode ini. Keuntungan dari breakpoint metode adalah bahwa mereka dapat berhenti dan men -debug saat memasuki atau keluar dari metode metode. Mereka mirip dengan breakpoint baris, dan hanya breakpoint baris dan metode breakpoint yang memiliki fungsi pengaturan kondisi dan waktu akses.
Namun, breakpoint metode memiliki keuntungan lain. Jika kode dikompilasi, breakpoint baris yang ditentukan tidak berfungsi, sehingga Anda hanya dapat menekan breakpoint metode.
Jika Anda tertarik, Anda dapat menghapus kait sebelum menambahkan nomor baris ... melalui A1 dan debug dan lihat.
3. Amati Breakpoints: Breakpoints 3.1 dan 3.3 Hit pada Variabel Anggota. Hanya variabel anggota objek yang berpengaruh, variabel anggota statis tidak berfungsi.
Anda dapat mengatur utas/VM 3.2 untuk ditangguhkan ketika variabel diakses atau diatur, yaitu, semua metode mengakses atau mengatur variabel anggota yang mirip dengan 3.4 akan dipantau.
4. Pengecualian Breakpoint: Breakpoint Pengecualian dapat ditambahkan melalui 4.6, atau klik Output Informasi Kelas Pengecualian dalam Informasi Log.
Pengecualian Breakpoint 4.1. Ketika pengecualian terjadi dalam sistem, utas/VM ditangguhkan pada posisi lemparan pengecualian yang ditangkap atau pada pengecualian pelemparan lokasi 4.2 dan 4.4 yang tidak ditangkap oleh program tersebut, dan juga dapat menentukan apakah subkelas yang mencakup pengecualian juga terdeteksi 4.3 dan 4.5.
Selain suspensi abnormal yang ditetapkan di atas, Anda dapat menetapkan eksekusi penangguhan dari Java-> Debug, terutama dua:
1. Apakah menangguhkan eksekusi pada pengecualian yang tidak ada yang terjadi. Selama debugging, selalu ada penangguhan pengecualian yang mempengaruhi debugging, tetapi tidak ada breakpoint terkecuali, Anda dapat memeriksa opsi ini;
2. Apakah ditangguhkan selama kesalahan kompilasi, situasi ini biasanya terjadi ketika men -debugging dan memodifikasi kode;
Hal lain yang disebutkan adalah bahwa aplikasi dengan metode utama dimulai. Anda dapat memeriksa Stop di Main A3 dalam konfigurasi debugging. Ketika program masuk, utas akan ditangguhkan dan menunggu debugging.
5. Breakpoint pemuatan kelas: Breakpoint 5.1 dipukul pada nama kelas. Breakpoint pemuatan kelas tidak dapat diatur pada antarmuka, tetapi kelas abstrak OK. Namun, selama debugging, breakpoint tidak akan memasuki ClassLoader. Entri langkah demi langkah akan diketahui memasuki metode konstruksi subkelas. Setelah menangguhkan utas, kelas non-abstrak akan masuk ke ClassLoader (jika tidak ada penyaringan filter) 5.3. Apakah breakpoint pemuatan kelas dipukul pada kelas abstrak atau non-abstrak, utas/vm5.2 akan ditangguhkan ketika kelas dimuat untuk pertama kalinya atau subkelas pertama dimuat untuk pertama kalinya.
2. Debug program
1. Debug Program Bahasa Java Lokal
Di antara semua debugging, debugging program Java adalah yang termudah, terutama termasuk menetapkan breakpoint, memulai debugging, melangkah, dan mengakhiri debugging.
1) Setel breakpoint:
2) Mulai debugging: Eclipse menyediakan empat cara untuk memulai debugging program (peluncuran), yaitu melalui menu (run> debug), ikon ("bug tempat tidur hijau"), kanan-> debug AS dan kunci pintas (F11). Dalam hal ini, ini mirip dengan perintah lain (seperti menjalankan).
Prompt muncul. Anda perlu beralih ke ruang kerja debugging, periksa "Ingat keputusan saya", ingat untuk memilih, dan tidak ada prompt akan diminta lain kali, dan kemudian klik [ya].
3) Eksekusi satu langkah: terutama menggunakan beberapa tampilan yang disebutkan di atas untuk debugging, di antaranya beberapa tombol dalam tampilan debug memiliki kunci pintasan:
Langkah Retuen (F7)
Step Over (F6)
Melangkah ke (f5)
Akhiri Debugging: Menghentikan debugging program lokal melalui perintah penghentian.
2. Kasus
Skenario 1: Xiao Ming menulis seorang pelaksana tugas, yang dieksekusi terus menerus. Setelah menjalankannya secara online untuk jangka waktu tertentu, ia menemukan bahwa ada kemungkinan beberapa kegagalan. Setelah berjalan untuk jangka waktu tertentu, pelaksana tugas keluar secara tidak normal. Karena itu adalah penunjuk nol, Xiao Ming ingin men -debug secara lokal dan tidak tahu di mana breakpoint berada. Masalah ini adalah peristiwa probabilistik dan mungkin tidak harus muncul. Jadi setelah Xiao Ming men -debug beberapa kali, dia pusing dan bahkan tidak bisa melihat kodenya dengan jelas. Xiao Ming ingin memiliki breakpoint dan berhenti dan biarkan dia menemukan masalah setiap kali pengecualian penunjuk nol terjadi. Itu akan sangat bagus.
Breakpoint Pengecualian
Breakpoint Pengecualian: Dalam proses menemukan masalah, Anda sering menemukan breakpoint yang tidak dapat dipukul ke posisi yang sesuai, yang sangat berbeda dari titik pemicu masalah. Jadi saat ini, Anda mungkin juga mencoba breakpoint pengecualian. Seperti namanya, breakpoint pengecualian mengacu pada breakpoint yang secara otomatis menggantung setelah melemparkan pengecualian tertentu.
Klik pada bagian merah untuk menambahkan titik istirahat yang tidak normal
Masukkan jenis pengecualian yang ingin Anda temukan, seperti NullpointerException. Dengan cara ini, setelah pengecualian NullpointerException dilemparkan ke dalam sistem, utas saat ini akan ditangguhkan, memberi Anda kesempatan untuk menemukan masalah tersebut.
Adegan 2: Xiao Ming menulis lingkaran besar. Saat menyetel kode, Xiao Ming menemukan bahwa setiap kali loop mencapai 100.000 kali, ada masalah dan itu tidak memenuhi harapannya. Jadi Xiao Ming membuat breakpoint di loop, ingin melihat apa yang sedang terjadi, tetapi Xiao Ming tidak pernah memikirkan betapa sulitnya mencapai 100.000 loop. Pada saat ini, Xiao Ming sudah mulai banyak berpikir, jika ada breakpoint seperti itu:
Jika jumlah loop == 100000, utas berhenti
Breakpoint bersyarat
Seperti yang ditunjukkan pada gambar di sebelah kanan, loop 1000 kali. Jika Anda ingin berhenti saat melingkar hingga 500 kali, Anda dapat membuat breakpoint bersyarat dan klik kanan breakpoint untuk menggantung properti breakpoint.
Pilih Kondisi Aktifkan
Di bagian kosong, tambahkan kondisi Anda sendiri. Jika kondisi kembali benar, utas akan ditangguhkan. Jika salah, pengecualian akan diabaikan.
Hit Count secara resmi menangguhkan utas setelah breakpoint melewati. Jika diatur ke 500, 499 kali pertama akan diekspresikan, dan tidak akan berhenti setelah breakpoint. Ketika breakpoint ke -500 kalinya, breakpoint akan menangguhkan utas saat ini.
ekspresi
Ekspresi dapat melihat beberapa baris perintah yang tidak tersedia dalam kode saat ini untuk memfasilitasi penentuan posisi masalah.
Adegan 3: Xiao Ming mengalami masalah baru -baru ini. Selalu ada masalah saat memanggil plug-in pihak ketiga. Xiao Ming curiga itu adalah bug plug-in pihak ketiga, tetapi Xiao Ming tidak menemukan kode sumber dan tidak dapat men-debug. Apa yang harus dilakukan Xiao Ming?
Debug menargetkan plug-in pihak ketiga
1. Dekompilasi kode menggunakan alat dekompilasi
2. Saring kode sumber yang didekompilasi
3. Memperbaiki kesalahan kompilasi kode sumber
4. Debug
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.