สวัสดีทุกคน ชุมชน JavaRush วันนี้เราจะพูดถึงการดีบัก: คืออะไร และจะดีบักใน Intellij IDEA ได้อย่างไร
บทความนี้มีไว้สำหรับผู้ที่มีความรู้เกี่ยวกับ Java Core เพียงเล็กน้อยอยู่แล้ว จะไม่มีกรอบงานหรือกระบวนการที่ซับซ้อนสำหรับการเผยแพร่ไลบรารี เดินง่าย. ดังนั้นทำตัวให้สบายแล้วเริ่มกันเลย!
แต่จะทำอย่างไร? แน่นอน คุณสามารถตั้งค่าได้
การแก้ไขข้อบกพร่องเป็นกระบวนการของการดีบัก (ตรวจสอบ) โค้ด เมื่อในระหว่างการดำเนินการ คุณสามารถหยุดที่สถานที่ที่กำหนดและดูความคืบหน้าของการดำเนินการได้ เข้าใจสถานะของโปรแกรมในบางจุด มันเหมือนกับว่าคุณสามารถหยุดชีวิตและมองทุกสิ่งจากภายนอกได้ เจ๋งใช่มั้ย? เป้าหมายของเราคือการเรียนรู้วิธีดีบักแอปพลิเคชันอย่างรวดเร็วและง่ายดายโดยใช้ Intellij IDEA สภาพแวดล้อมการพัฒนาที่เราชื่นชอบ
เลือก โปรเจ็กต์ การนำเสนอการแก้ไขข้อ บกพร่อง คลิกตกลงและรับ:
ออกจากโปรเจ็กต์การนำเข้าจากแหล่งภายนอก Mavenแล้วคลิกเสร็จสิ้น หลังจากนำเข้าโครงการแล้ว เราสามารถอธิบายกระบวนการโดยใช้ตัวอย่างสดได้
ที่จะทำให้เบรกพอยต์ทั้งหมดไม่ทำงาน หากต้องการดูว่าเบรกพอยท์ใดถูกตั้งค่าไว้แล้ว คุณสามารถไปที่ Debug ที่มุมล่างซ้ายแล้วค้นหาไอคอน
หรือกดCtrl+Shift+F8 :
เมื่อเราไปที่รายการเบรกพอยท์ เราจะเห็น:
มีจุดสั่งล่วงหน้าสองจุด ที่นี่:
ในหน้าต่างที่ปรากฏขึ้น ให้เขียนชื่อของข้อยกเว้นที่ต้องเพิ่ม เลือกจากรายการที่เสนอแล้วคลิกตกลง :
เราเสร็จสิ้นโปรแกรมการศึกษานี้และเดินหน้าต่อไป
เนื่องจากฉันเป็นคนเลี้ยงผึ้งตามกรรมพันธุ์ สำหรับการนำเสนอการแก้ไขจุดบกพร่อง ฉันจึงสร้างโครงการที่อธิบายกระบวนการเก็บน้ำหวานด้วยผึ้ง การแปรรูปน้ำหวานให้เป็นน้ำผึ้ง และการได้น้ำผึ้งจากรัง จากเอกสารประกอบของไฟล์ README ซึ่งอยู่ในรากของโครงการ เราได้อ่าน: พฤติกรรมที่คาดหวัง - จากดอกไม้ทั้งหมดที่ใช้เก็บน้ำหวาน (เป็น ค่า สองเท่า ) ปริมาณน้ำผึ้งจะถูกรวบรวมเท่ากับครึ่งหนึ่งของ น้ำหวานที่รวบรวมไว้ โครงการมีชั้นเรียนดังต่อไปนี้:
คุณต้องดูว่ามีอะไรผิดปกติที่นั่น จากการติดตามสแต็กที่มุมขวาล่าง เราจะเห็นว่าใน
นี่เป็นกรณีของเราอย่างแน่นอน: มี RuntimeException มาเพิ่มการค้นหาข้อยกเว้นดังกล่าวดังที่อธิบายไว้ข้างต้น และเรียกใช้
และเราจะรับโปรแกรมที่หยุดทำงานในขณะนี้ก่อนที่จะเรียกใช้ข้อยกเว้นด้วยไอคอนนี้ ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 20]()
. หากต้องการรับข้อมูลที่ครบถ้วนคุณต้องดูในส่วนแก้ไขข้อบกพร่อง มันมีVariablesซึ่งแสดงตัวแปรทั้งหมดที่มีอยู่ในส่วนนี้ของแอปพลิเคชัน:
แอปพลิเคชันทำงานและให้คำตอบ: “น้ำผึ้ง 33.0 ผลิตโดยผึ้ง 7 ตัวจากต้นน้ำผึ้ง 2 ต้น” ทุกอย่างจะดี แต่คำตอบคือ ผิด... ทั้งหมดเป็นเพราะในเอกสารประกอบไฟล์ README มีเขียนไว้ว่าน้ำหวานกลายเป็นน้ำผึ้งในอัตราส่วน 2 ต่อ 1:
มาดูจุดนี้กันดีกว่า โปรแกรมหยุดก่อนที่จะดำเนินการบรรทัดที่ 28 ที่ด้านล่างสุดเราจะเห็นส่วน Debug ซึ่งอธิบายข้อมูลทั้งหมดในแอปพลิเคชันที่ทำงานอยู่ ส่วนของตัวแปร ดังที่กล่าวไปแล้ว ประกอบด้วยตัวแปรและออบเจ็กต์ทั้งหมดที่สามารถเข้าถึงได้จากส่วนนี้ของแอปพลิเคชัน ส่วนเฟรมจะแสดงขั้นตอนที่แอปพลิเคชันดำเนินการ คุณสามารถดูขั้นตอนก่อนหน้าและรับข้อมูลในเครื่องทั้งหมดได้ เพื่อให้โปรแกรมทำงานต่อไปคุณสามารถกดF9หรือไอคอนสีเขียวดังที่แสดงด้านล่าง:
หากต้องการหยุดโปรแกรมคุณต้องคลิกที่สี่เหลี่ยมสีแดง:
หากต้องการรีสตาร์ทแอปพลิเคชันในโหมดแก้ไขข้อบกพร่องคุณต้องคลิกที่ลูกศร:
ถัดไป หากต้องการดูแอปพลิเคชันทีละขั้นตอน คุณสามารถใช้สองปุ่ม:
ต่อไปเราจะเข้าสู่โหมดแก้ไขข้อบกพร่องโดยใช้F8 โดยใช้ วิธีนี้จนจบและอธิบายสิ่งที่เกิดขึ้นในวิธีนี้:
เอกสารประกอบในไฟล์ README มีข้อผิดพลาดและจะต้องได้รับการอัปเดต มาอัปเดตไฟล์ README กัน:
hub ต่อไปได้อย่างใจเย็นด้วยรูปลักษณ์ที่ชาญฉลาด :)
ทำไมคุณถึงต้องการการดีบัก?
มาทำให้ชัดเจนทันที: ไม่มีโค้ดใดที่ไม่มีข้อบกพร่อง... ชีวิตทำงานอย่างนี้แหละ ดังนั้นเราจึงไม่ควรกลายเป็นคนเดินกะโผลกกะเผลกทันทีและยอมแพ้ทุกอย่างหากโค้ดไม่ทำงานอย่างที่เราคาดหวังSystem.out.println
ทุกที่ที่ทำได้ จากนั้นเรียงลำดับเอาต์พุตในเทอร์มินัลโดยหวังว่าคุณจะพบข้อผิดพลาด ถึงกระนั้น ก็เป็นไปได้... และพวกเขาทำได้ และพวกเขาทำอย่างระมัดระวังโดยใช้การบันทึก (คุณสามารถอ่านรายละเอียดได้ ที่นี่ ) แต่ถ้าเป็นไปได้ที่จะรันโค้ดบนเครื่องท้องถิ่น ควรใช้Debugจะ ดีกว่า ฉันอยากจะทราบทันทีว่าในบทความนี้ เราจะพิจารณาการดีบักโปรเจ็กต์ภายใน Intellij IDEA หากคุณสนใจอ่านเกี่ยวกับการดีบักแบบระยะไกล นี่คือบทความ จากแหล่งข้อมูลของเรา
ดีบั๊กคืออะไร
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 3](https://cdn.javarush.com/images/article/40b18e00-bf88-45ec-aaec-c470999fd538/original.jpeg)
สิ่งที่คุณต้องมีเพื่อเริ่มการดีบัก
ฉันให้คำแนะนำฟรี: ในขณะที่คุณกำลังอ่านบทความ ให้ทำทุกอย่างที่จะอธิบายไว้ที่นี่ โชคดีที่มีทุกอย่างสำหรับเรื่องนี้ อะไรที่คุณต้องการ:- สภาพแวดล้อมการพัฒนา Intellij IDEA เวอร์ชัน 2019.3.1 และสูงกว่า เผื่อใครไม่มี มีลิงค์ให้โหลดครับ ดาวน์โหลด Community Edition เพราะนั่นคือสิ่งที่ฉันจะใช้
- โคลนโปรเจ็กต์จาก GitHubและนำเข้าผ่าน IDEA
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 4](https://cdn.javarush.com/images/article/aedc31d6-2aa7-4915-b8fb-d28840eb98e9/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 5](https://cdn.javarush.com/images/article/f596dcae-6c5a-47a9-af41-971fc9468078/original.jpeg)
ทฤษฎีเล็กๆ น้อยๆ...ผมสัญญา :D
ในการเริ่มแก้ไขจุดบกพร่องเล็กน้อย คุณต้องเข้าใจว่าจุดพัก คืออะไร และทำความเข้าใจปุ่มลัดสองสามปุ่มที่คุณต้องใช้ในการเริ่มต้น เบรกพอยต์เป็นเครื่องหมายพิเศษที่แสดงตำแหน่งหรือสถานะที่ควรหยุดแอปพลิเคชัน คุณตั้งค่าเบรกพอยต์ได้ด้วยการคลิกซ้ายที่แถบด้านข้าง ซ้ายหรือคลิกตำแหน่งโค้ดแล้วกดCtrl + F8 เบรกพอยต์มีสามประเภท: เครื่องหมายเส้น เครื่องหมายตัวแปร และเครื่องหมายวิธีการ ดูเหมือนว่านี้:-
ต่อบรรทัด:
หากมีแลมบ์ดาในนิพจน์ IDEA จะเสนอทางเลือกให้คุณ - ใส่นิพจน์บนทั้งบรรทัดหรือเฉพาะเจาะจงในแลมบ์ดา:
-
ต่อวิธี:
-
ต่อชั้นเรียน
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 10](https://cdn.javarush.com/images/article/87e391e3-d739-45ba-92c7-5f81d14de5eb/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 11](https://cdn.javarush.com/images/article/acd2d26b-5913-4c0b-8d48-f87cea63135d/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 12](https://cdn.javarush.com/images/article/76f7dbff-d5ec-4602-a29b-17a60cac514f/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 13](https://cdn.javarush.com/images/article/7da6ff9e-eaf3-4cf2-820f-b9d5e2c36f55/original.jpeg)
- Bee.java:24 - ในคลาส Bee ออนไลน์ 24
- Main.java:14 - ในคลาส Main ที่บรรทัด 14
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 14](https://cdn.javarush.com/images/article/e81fc96c-4964-4a40-be23-81d3c86f63b7/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 15](https://cdn.javarush.com/images/article/0f16887a-08dd-44a4-a3d8-e1ee2b709c5d/original.jpeg)
ไปกันเถอะ บุกเข้าไปในป่าของการดีบักกันเถอะ
![แก้ไขข้อบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 16](https://cdn.javarush.com/images/article/6fd20645-bd78-4919-acb8-54d8d41898fb/original.jpeg)
- Bee - ผึ้งงานธรรมดา
- BeeQueen - ราชินีผึ้ง;
- รังผึ้ง - รังผึ้ง;
- HoneyPlant - พืชน้ำผึ้งที่เก็บน้ำผึ้ง
- หลัก - ตำแหน่งที่
public static void main()
วิธีการที่โครงการเริ่มต้นตั้งอยู่
main()
ปรากฎว่าไม่เพียงแต่ไม่นับปริมาณน้ำผึ้งเท่านั้น แต่ยังเกิดข้อผิดพลาดด้วย... ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 17](https://cdn.javarush.com/images/article/449d37fa-0b7c-4613-b8fe-4980fe5a6fa6/original.jpeg)
HoneyPlant.java:20
RuntimeException ถูกส่งออกไป: ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 18](https://cdn.javarush.com/images/article/a8331941-e503-4112-893e-1857b03e5a61/original.jpeg)
main()
เมธอดใน โหมดแก้ไขข้อบกพร่อง ในการดำเนินการนี้ให้คลิกที่ลูกศรสามเหลี่ยมสีเขียวใน Intellij IDEA ก่อนวิธีการmain()
: ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 19](https://cdn.javarush.com/images/article/f91b5167-57c4-4a12-9460-008c048adf83/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 20](https://cdn.javarush.com/images/article/4c9e2958-0429-486c-80fb-f3da5a1b94e5/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 21](https://cdn.javarush.com/images/article/30cf4eba-c2ea-40dd-bbaf-5991f449cc76/original.jpeg)
- น้ำหวาน = 1.0;
- น้ำหวานความจุ = -1.0.
if ( nectar == 0 ) {
return 0;
}
แต่สิ่งที่จับได้คือมันกำลังตรวจสอบตัวแปรที่ผิด... และนี่คือจุดบกพร่องในโค้ด แทนที่จะตรวจสอบค่าของน้ำหวานในดอกไม้ซึ่งอยู่ใน ตัวแปร NectarCapacityโปรแกรมจะตรวจสอบค่าของน้ำหวานที่เข้ามาในเมธอดและเป็นปริมาณที่ต้องการดึงจากน้ำหวาน นี่ไง แมลงตัวแรก! ดังนั้นเราจึงใส่มันให้ถูกต้องและรับนิพจน์:
if ( nectarCapacity == 0) {
return 0;
}
ต่อไปเรารันmain()
วิธีการในโหมดปกติ(Run `Main.main()`)
และไม่มีข้อผิดพลาดอีกต่อไป โปรแกรมทำงาน: ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 22](https://cdn.javarush.com/images/article/76c7d9e8-0432-48b0-87a8-e0523c819c5d/original.jpeg)
## Documentation
Presentation based on honey getting process.
**Note**: 1 honey point = 2 nectar points
จากวิธีการหลักจะเห็นได้ว่ามีต้นน้ำผึ้งอยู่ 2 ต้น คือ น้ำหวาน 30 และ 40 หน่วย ตามลำดับ ดังนั้นสุดท้ายแล้วจะได้น้ำผึ้ง 35 หน่วย และเขาเขียนว่า 33. อีกสองหน่วยหายไปไหน?... เรามารู้กัน! ในการทำเช่นนี้ เราจำเป็นต้องใส่เบรกพอยต์ในเมธอดMain.main()
บนบรรทัดที่ 28 ซึ่งจะถูกดำเนินการbeeHive.populateHoney()
และรันmain
เมธอดในโหมด Debug: ![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 23](https://cdn.javarush.com/images/article/f83da710-6b0b-4549-b159-d3dff49ccd8d/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 24](https://cdn.javarush.com/images/article/c42076d8-4775-40de-854e-ba8fa48d76f0/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 25](https://cdn.javarush.com/images/article/39df8a60-d773-49ca-97bd-11db04a8f5b2/original.jpeg)
![แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 26](https://cdn.javarush.com/images/article/1d0541ac-92b1-415d-9c51-168ac2652192/original.jpeg)
- F8 - อ่านโค้ดบางส่วนและอย่าใช้วิธีภายใน
- F7 - ไปที่ส่วนของโค้ดแล้วป้อนวิธีการภายใน
beeHive.populateHoney()
เราต้องกด F7 แล้วเราจะไปต่อ: ![แก้ไขข้อบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 27](https://cdn.javarush.com/images/article/78e3f83a-2c4f-4648-9382-95575fa835b3/original.jpeg)
- บรรทัดที่ 25 - Stream API ใช้เพื่อรวบรวมน้ำผึ้งจากผึ้งทั้งหมด
- บรรทัดที่ 26 - น้ำผึ้งถูกเติมเข้าไปในบรรทัดที่มีอยู่
- บรรทัดที่ 27 - น้ำผึ้ง 2 หน่วยถูกจัดสรรให้กับราชินี
- บรรทัดที่ 28 - สองหน่วยนี้จะถูกลบออกจากจำนวนน้ำผึ้งทั้งหมด
- บรรทัดที่ 29 - มดลูกกินน้ำผึ้งนี้
## 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.
เพียงเท่านี้: ข้อบกพร่องทั้งหมดที่พบได้รับการแก้ไขแล้ว เราสามารถดื่มกาแฟต่อและอ่านบทความบน JavaRush สรุป
ในบทความนี้เราพบว่า:- ไม่มีงานใดที่ปราศจากข้อผิดพลาดและการดีบักเป็นวิธีที่ดีในการแก้ไข
- เบรกพอยต์คืออะไรและมีประเภทใดบ้าง
- วิธีการกำหนดค่าเบรกพอยต์ข้อยกเว้น
- วิธีนำทางในโหมดแก้ไขข้อบกพร่อง
บทความน่าอ่าน
- โครงการที่ใช้ในบทความ
- IntelliJ IDEA และ Debug: ไม่ใช่การดำน้ำ แต่เป็นการดำน้ำตื้น
- ความจริงอันขมขื่นเกี่ยวกับการเขียนโปรแกรม...
- เอกสารอย่างเป็นทางการ
- ประเภทของเบรกพอยต์ เอกสารอย่างเป็นทางการ
GO TO FULL VERSION