Hello semua, komuniti JavaRush. Hari ini kita akan bercakap tentang nyahpepijat: apakah itu dan cara untuk menyahpepijat dalam Intellij IDEA. Artikel ini bertujuan untuk orang yang sudah mempunyai pengetahuan minimum tentang Java Core. Tidak akan ada rangka kerja atau proses yang kompleks untuk menerbitkan perpustakaan. Mudah berjalan. Jadi selesakan diri anda dan mari mulakan!
dokumentasi fail README, yang terletak pada akar projek, kita membaca: tingkah laku yang dijangkakan - daripada semua bunga yang mana nektar dikumpulkan (sebagai nilai berganda ), jumlah madu akan dikumpulkan bersamaan dengan separuh daripada nektar yang dikumpul. Projek ini mempunyai kelas berikut:
dokumentasi fail README Ditulis bahawa nektar bertukar menjadi madu dalam nisbah 2 hingga 1:
dokumentasi mengandungi ralat dan perlu dikemas kini. Mari kemas kini fail README:
hab JavaRush dengan tenang dengan pandangan yang bijak :)
Mengapa anda memerlukan Debug?
Mari jelaskan dengan segera: tiada kod tanpa pepijat... Beginilah cara kehidupan berfungsi. Oleh itu, kita tidak harus segera menjadi lemas dan melepaskan segala-galanya jika kod tidak berfungsi seperti yang kita harapkan. Tetapi apa yang perlu dilakukan? Sudah tentu, anda boleh mengarahkanSystem.out.println
seboleh-bolehnya dan kemudian mencari keluaran dalam terminal dengan harapan anda akan dapat mencari ralat. Namun, ia mungkin... dan mereka melakukannya, dan mereka melakukannya dengan berhati-hati menggunakan pembalakan (anda boleh membacanya di sini ). Tetapi jika ada kemungkinan untuk menjalankan kod pada mesin tempatan, lebih baik menggunakan Debug . Saya ingin ambil perhatian segera bahawa dalam artikel ini kita akan mempertimbangkan menyahpepijat projek di dalam Intellij IDEA. Jika anda berminat untuk membaca tentang penyahpepijatan jauh, berikut ialah artikel daripada sumber kami .
Apa itu Debug
Nyahpepijat ialah proses menyahpepijat (menyemak) kod, apabila semasa pelaksanaannya anda boleh berhenti di tempat yang ditetapkan dan melihat kemajuan pelaksanaan. Memahami keadaan program di tempat tertentu. Ia betul-betul sama seolah-olah anda boleh menghentikan kehidupan dan melihat segala-galanya dari luar. Sejuk kan? Matlamat kami adalah untuk mempelajari cara menyahpepijat aplikasi dengan cepat dan mudah menggunakan persekitaran pembangunan kegemaran kami, Intellij IDEA.Perkara yang anda perlukan untuk memulakan penyahpepijatan
Saya memberi nasihat percuma: semasa anda membaca artikel itu, lakukan semua yang akan diterangkan di sini, mujurlah ada segala-galanya untuk ini. Apa yang anda perlukan:- Persekitaran pembangunan Intellij IDEA versi 2019.3.1 dan lebih tinggi. Sekiranya seseorang tidak memilikinya, berikut adalah pautan untuk anda memuat turunnya. Muat turun Edisi Komuniti kerana itulah yang saya akan gunakan.
- Klonkan projek daripada GitHub dan importnya melalui IDEA.
Teori sikit... janji :D
Untuk memulakan penyahpepijatan dalam tahap yang sedikit, anda perlu memahami apa itu breakPoint dan memahami beberapa kekunci pintas yang diperlukan untuk bermula. BreakPoint ialah penanda khas yang memaparkan lokasi atau keadaan di mana aplikasi harus dihentikan. Anda boleh menetapkan titik putus sama ada dengan mengklik kiri pada bar sisi kiri, atau dengan mengklik pada lokasi kod dan menekan Ctrl + F8 . Titik putus terdapat dalam tiga jenis: label setiap baris, label setiap pembolehubah dan label setiap kaedah. Ia kelihatan seperti ini:-
Per baris:
jika terdapat lambda dalam ungkapan, maka IDEA menawarkan anda pilihan - untuk meletakkan ungkapan pada keseluruhan baris atau khususnya dalam lambda:
-
Setiap kaedah:
-
Setiap kelas
- Bee.java:24 - dalam kelas Bee pada baris 24
- Main.java:14 - dalam kelas Utama pada baris 14
Mari kita pergi, mari kita menceroboh hutan debug
Memandangkan saya seorang penternak lebah keturunan, untuk pembentangan penyahpepijatan saya mencipta projek yang menerangkan proses mengumpul nektar oleh lebah, memproses nektar menjadi madu dan mendapatkan madu daripada sarang. Berdasarkan- Lebah - lebah pekerja biasa;
- BeeQueen - ratu lebah;
- BeeHive - sarang lebah;
- HoneyPlant - tumbuhan madu dari mana madu dikumpulkan;
- Utama - di mana
public static void main()
kaedah di mana projek bermula terletak.
main()
, ternyata bukan sahaja jumlah madu tidak dikira, tetapi ralat juga muncul... Anda perlu melihat apa yang salah di sana. Daripada surih tindanan di sudut kanan bawah, kita dapat melihat bahawa dalam HoneyPlant.java:20
, RuntimeException dilemparkan: Ini betul-betul kes kita: terdapat RuntimeException, mari tambah carian untuk pengecualian sedemikian, seperti yang diterangkan di atas, dan jalankan main()
kaedah dalam mod nyahpepijat. Untuk melakukan ini, klik pada anak panah segitiga hijau dalam Intellij IDEA sebelum kaedah main()
: dan kami akan mendapat program yang dihentikan pada masa ini sebelum pengecualian dengan ikon ini dicetuskan . Untuk mendapatkan maklumat lengkap, anda perlu melihat di bahagian Nyahpepijat. Ia mempunyai Variables , yang menunjukkan semua pembolehubah yang tersedia dalam bahagian aplikasi ini:
- nektar = 1.0;
- nectarCapacity = -1.0.
if ( nectar == 0 ) {
return 0;
}
Tetapi tangkapannya ialah ia menyemak pembolehubah yang salah... dan ini adalah pepijat dalam kod. Daripada menyemak nilai nektar dalam bunga, yang terdapat dalam pembolehubah nectarCapacity , program ini menyemak nilai nektar , yang masuk ke dalam kaedah dan merupakan jumlah yang mereka mahu ambil daripada nektar. Ini dia, pepijat pertama! Oleh itu, kami meletakkannya dengan betul dan mendapatkan ungkapan:
if ( nectarCapacity == 0) {
return 0;
}
Seterusnya, kami menjalankan main()
kaedah dalam mod biasa (Run `Main.main()`)
dan tidak ada lagi ralat, program berfungsi: Aplikasi berfungsi dan memberikan jawapan: "33.0 madu dihasilkan oleh 7 lebah dari 2 tumbuhan madu" Semuanya akan baik-baik saja, tetapi jawapannya adalah salah... Semuanya kerana dalam ## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
Dari kaedah utama dapat dilihat terdapat dua pokok madu, masing-masing 30 dan 40 unit nektar, jadi akhirnya anda harus mendapat 35 unit madu. Dan dia menulis bahawa 33. Ke manakah perginya dua unit yang lain?... Sekarang kita akan mengetahuinya! Untuk melakukan ini, kita perlu meletakkan titik putus dalam kaedah Main.main()
pada baris No. 28, di mana ia dilaksanakan beeHive.populateHoney()
dan jalankan main
kaedah dalam mod Nyahpepijat: Mari kita lihat dengan lebih dekat pada titik ini. Program berhenti sebelum melaksanakan baris ke-28. Di bahagian bawah kita melihat bahagian Nyahpepijat, yang menerangkan semua maklumat pada aplikasi yang sedang berjalan. Bahagian Pembolehubah, seperti yang telah disebutkan, mengandungi semua pembolehubah dan objek yang boleh diakses dari bahagian aplikasi ini. Bahagian Bingkai menunjukkan langkah-langkah yang dilalui oleh aplikasi, anda boleh melihat langkah sebelumnya dan mendapatkan semua data setempat. Untuk program terus berfungsi, anda boleh menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah: Untuk menghentikan program, anda perlu mengklik pada petak merah: Untuk memulakan semula aplikasi dalam mod nyahpepijat, anda perlu mengklik pada anak panah: Seterusnya, untuk pergi langkah demi langkah melalui aplikasi, anda boleh menggunakan dua kekunci:
- F8 - pergi melalui bahagian kod dan jangan pergi ke kaedah dalaman;
- F7 - pergi melalui bahagian kod dan masukkan kaedah dalaman.
beeHive.populateHoney()
, kita perlu menekan F7, dan kita akan meneruskan: Seterusnya, kita melalui mod nyahpepijat menggunakan F8 menggunakan kaedah ini hingga akhir dan menerangkan perkara yang berlaku dalam kaedah ini:
- Baris 25 - Stream API digunakan untuk mengumpul madu daripada semua lebah;
- Baris ke-26 - madu ditambah kepada yang sedia ada;
- Baris ke-27 - 2 unit madu diperuntukkan untuk ratu;
- Baris ke-28 - kedua-dua unit ini dikeluarkan daripada jumlah madu;
- Baris 29 - rahim makan madu ini.
## Documentation
Presentation based on honey getting process.
**Note**:
* 1 honey point = 2 nectar points
* 2 honey point queen bee eats every time when beehive populates the honey.
Dan itu sahaja: semua pepijat yang ditemui telah diperbaiki, kami boleh terus minum kopi dan membaca artikel di ringkaskan
Dalam artikel ini kami mendapati bahawa:- tiada kerja tanpa ralat dan penyahpepijatan adalah cara terbaik untuk menyelesaikannya;
- apakah titik putus dan jenis apa yang wujud;
- bagaimana untuk mengkonfigurasi titik putus pengecualian;
- Bagaimana untuk menavigasi dalam mod nyahpepijat.
Artikel untuk dibaca
- Projek yang digunakan dalam artikel
- IntelliJ IDEA dan Debug: bukan menyelam, tetapi snorkeling
- Kebenaran pahit tentang pengaturcaraan...
- Dokumentasi rasmi
- Jenis-jenis titik putus. Dokumentasi rasmi
- Bagaimana ujian temu duga bertukar menjadi perpustakaan sumber terbuka
- Mencipta sistem pemantauan harga tiket penerbangan: panduan langkah demi langkah [Bahagian 1]
- Panduan untuk mencipta pelanggan untuk API Skyscanner dan menerbitkannya dalam jCenter dan Maven Central [Bahagian 1]
- Pembalakan: apa, bagaimana, di mana dan dengan apa?
GO TO FULL VERSION