Hello semua dalam komuniti CodeGym! Hari ini mari kita bercakap tentang nyahpepijat — apakah itu dan cara untuk menyahpepijat dalam IntelliJ IDEA. Artikel ini ditujukan untuk orang yang sudah mempunyai pengetahuan minimum Java Core. Tidak akan ada sebarang rangka kerja atau prosedur rumit untuk menerbitkan perpustakaan. Jalan-jalan santai. Jadi selesakan diri anda dan mari mulakan!
dokumentasi , yang boleh didapati dalam direktori akar projek, tingkah laku yang dijangkakan bagi semua bunga dari mana nektar dikumpul adalah untuk jumlah madu yang dikumpul (yang mengambil bentuk dua kali ganda ) adalah sama dengan separuh daripada nektar yang dikumpul. Projek ini mempunyai kelas berikut:
dokumentasi fail README, nektar ditukar kepada madu pada nisbah 2 kepada 1:
dokumentasi mengandungi ralat dan perlu dikemas kini. Mari kemas kini fail README:
Stack Overflow CodeGym :)
Mengapa anda memerlukan mod Nyahpepijat
Mari kita segera menjelaskan sesuatu untuk diri kita sendiri: tiada kod tanpa pepijat... Beginilah cara kehidupan berfungsi. Jadi, kita tidak sepatutnya berputus asa jika kod kita tidak berfungsi seperti yang kita harapkan. Tetapi apa yang harus kita lakukan? Nah, kita boleh meletakkanSystem.out.println
kenyataan di mana-mana dan kemudian menyisir keluaran konsol dengan harapan dapat mencari ralat. Yang berkata, anda boleh (dan orang ramai melakukannya) nyahpepijat menggunakan pengelogan berhati-hati. Tetapi jika anda boleh menjalankan kod anda pada mesin tempatan, lebih baik menggunakan mod Nyahpepijat . Saya ingin ambil perhatian segera bahawa dalam artikel ini kita akan mempertimbangkan menyahpepijat projek menggunakan IntelliJ IDEA.
Apakah mod Debug?
Mod nyahpepijat adalah untuk menyahpepijat (menyemak) kod berjalan. Ia membolehkan anda menghentikan pelaksanaan di tempat yang ditetapkan dan melihat perkembangan keadaan. Ia membolehkan anda memahami keadaan program di tempat tertentu dalam kod. Ia seperti dapat menghentikan jam dan melihat segala-galanya dari sisi. Sejuk kan? Objektif kami adalah untuk mempelajari cara menyahpepijat aplikasi dengan cepat dan mudah menggunakan persekitaran pembangunan IntelliJ IDEA kami yang tercinta.Perkara yang anda perlukan untuk memulakan penyahpepijatan
Berikut ialah beberapa nasihat percuma: semasa membaca artikel ini, lakukan semua yang akan diterangkan di sini — anda mempunyai semua yang perlu anda lakukan ikut serta. Apa yang anda perlukan:- IntelliJ IDEA versi 2019.3.1 atau lebih tinggi. Sekiranya seseorang tidak mempunyai ini, berikut ialah pautan untuk anda memuat turunnya . Muat turun Edisi Komuniti — itulah versi yang akan saya gunakan.
- Klonkan projek GitHub ini dan importnya melalui IDEA.
Cuma teori sikit... janji :D
Untuk memulakan penyahpepijatan walaupun sedikit, anda perlu memahami apa itu titik putus dan membiasakan diri dengan beberapa kekunci panas. Titik putus ialah penanda khas yang menunjukkan di mana anda mahu pelaksanaan aplikasi dihentikan, mungkin berdasarkan keadaan aplikasi. Anda boleh menetapkan titik putus sama ada dengan mengklik kiri pada panel sebelah kiri, atau dengan mengklik pada lokasi kod dan menekan Ctrl+F8 . Mari kita lihat tiga jenis titik putus: titik putus baris, titik pantau medan dan dan titik putus kaedah. Begini rupanya:-
Pada baris:
Jika pernyataan mempunyai ungkapan lambda, maka IDEA menggesa anda untuk memilih sama ada untuk meletakkan titik putus pada keseluruhan pernyataan atau khususnya pada ungkapan lambda:
-
Pada kaedah:
-
Pada kelas:
- Bee.java:24 — dalam kelas Bee pada baris 24
- Main.java:14 — dalam kelas Utama pada baris 14
Mari kita lakukan perkara yang dipanggil penyahpepijatan ini!
Saya berasal dari barisan panjang penternak lebah keluarga, jadi projek yang saya buat untuk menggambarkan penyahpepijatan menerangkan model proses lebah mengumpul nektar, memproses nektar menjadi madu, dan kemudian mendapatkan madu daripada sarang lebah. Menurut fail README- Lebah — lebah pekerja biasa
- BeeQueen - ratu lebah
- BeeHive — sarang lebah
- HoneyPlant — tumbuhan madu (sumber nektar) dari mana nektar dikumpul
- Utama — di sinilah kita dapati
public static void main()
, kaedah di mana pelaksanaan bermula.
main()
kaedah, maka kita mendapati bahawa program kita bukan sahaja tidak mengira jumlah madu, ia juga membuang pengecualian ... Kita perlu menyiasat dan menentukan apa masalahnya. Daripada timbunan surih di sudut kanan bawah, kita dapat melihat bahawa dalam RuntimeException dilemparkan pada HoneyPlant.java:20
: Itu sahaja yang kita bincangkan di atas. Mari lihat RuntimeException ini dengan menjalankan main()
kaedah dalam mod nyahpepijat. Untuk melakukan ini, klik pada anak panah segitiga hijau di IntelliJ IDEA di sebelah main()
kaedah. Akibatnya, kami akan menghentikan program pada masa ini sebelum pengecualian dilemparkan dan kami akan melihat ikon ini: Untuk mendapatkan semua maklumat yang tersedia, kami perlu melihat dalam bahagian Nyahpepijat. Ia mempunyai Pembolehubahanak tetingkap yang menunjukkan semua pembolehubah yang tersedia dalam bahagian aplikasi ini:
- nektar = 1.0;
- nectarCapacity = -1.0.
if (nectar == 0) {
return 0;
}
Tetapi masalahnya ialah kami menyemak pembolehubah yang salah. Ini adalah ralat dalam kod. Daripada menyemak jumlah nektar yang terdapat dalam bunga (yang disimpan dalam pembolehubah nectarCapacity ), program ini menyemak nilai parameter nektar kaedah , iaitu jumlah nektar yang ingin kita ambil daripada bunga. Ini dia! Pepijat pertama kami! Selepas membetulkannya, kami mendapat kod berikut:
if (nectarCapacity == 0) {
return 0;
}
Sekarang jalankan main()
kaedah dengan cara biasa (Run 'Main.main()')
. Tidak ada pengecualian yang dilemparkan, dan program berfungsi: Aplikasi berjalan hingga selesai dan memberikan jawapan berikut:
"33.0 honey was produced by 7 bees from 2 honey plants"
Semuanya akan baik-baik saja sekarang, tetapi jawapan ini tidak betul... Menurut
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
Kaedah utama jelas mempunyai dua tumbuhan madu dengan masing-masing 30 dan 40 unit nektar. Oleh itu, kita akhirnya akan mendapat 35 unit madu. Tetapi program memberitahu kami bahawa kami mendapat 33. Ke manakah perginya dua unit yang lain? Jom ketahui! Untuk melakukan ini, tetapkan titik putus dalam Main.main()
kaedah pada baris 28, di mana beeHive.populateHoney()
dipanggil dan jalankan main()
kaedah dalam mod Nyahpepijat: Kami akan mempertimbangkan perkara ini dengan lebih terperinci. Program ini berhenti melaksanakan sebelum melaksanakan baris 28. Di bahagian bawah, kita melihat bahagian Nyahpepijat, yang menunjukkan semua maklumat yang tersedia tentang aplikasi yang sedang berjalan. Seperti yang telah disebutkan, anak tetingkap Variables mengandungi semua pembolehubah dan objek yang tersedia dari bahagian aplikasi ini. Anak tetingkap Bingkai menunjukkan langkah yang sedang dilalui oleh aplikasi — anda boleh melihat langkah (bingkai) sebelumnya dan melihat semua data setempat. Untuk terus menjalankan program, anda boleh menekan F9 atau ikon hijau, seperti yang ditunjukkan di bawah: Untuk menghentikan program, klik pada petak merah: Untuk memulakan semula aplikasi dalam mod nyahpepijat, klik pada anak panah: Selanjutnya, anda boleh meneruskan melalui aplikasi langkah demi langkah menggunakan dua kekunci:
- F8 — Melangkah melalui kod tanpa melangkah ke kaedah;
- F7 — Langkah melalui kod dan langkah ke kaedah.
beeHive.populateHoney()
kaedah. Melangkah ke dalamnya, kita dapat: Sekarang kita akan menggunakan F8 untuk melangkah melalui kaedah ini dan menerangkan perkara yang berlaku di dalamnya:
- Baris 25 — Stream API digunakan untuk mengumpul nektar daripada semua lebah
- Baris 26 — Madu yang baru dibuat ditambah kepada madu sedia ada;
- Talian 27 — 2 unit madu diperuntukkan untuk permaisuri
- Baris 28 — Kedua-dua unit ini dikeluarkan daripada jumlah madu
- Baris 29 - Ratu makan madu ini.
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Telah siap. Kami telah membetulkan semua pepijat yang kami temui. Kita boleh meneruskan dengan tenang dengan pandangan yang sombong, menghirup kopi dan membaca artikel mengenai Mari kita ringkaskan
Dalam artikel ini, kami belajar:- kerja semua orang mempunyai ralat dan penyahpepijatan ialah cara terbaik untuk membetulkannya
- apakah titik putus dan jenis titik putus yang ada
- bagaimana untuk menetapkan titik putus pengecualian
- bagaimana untuk melangkah melalui kod dalam mod nyahpepijat
GO TO FULL VERSION