JavaRush /จาวาบล็อก /Random-TH /แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น...
Roman Beekeeper
ระดับ

แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น

เผยแพร่ในกลุ่ม
สวัสดีทุกคน ชุมชน JavaRush วันนี้เราจะพูดถึงการดีบัก: คืออะไร และจะดีบักใน Intellij IDEA ได้อย่างไร แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 1บทความนี้มีไว้สำหรับผู้ที่มีความรู้เกี่ยวกับ Java Core เพียงเล็กน้อยอยู่แล้ว จะไม่มีกรอบงานหรือกระบวนการที่ซับซ้อนสำหรับการเผยแพร่ไลบรารี เดินง่าย. ดังนั้นทำตัวให้สบายแล้วเริ่มกันเลย!

ทำไมคุณถึงต้องการการดีบัก?

มาทำให้ชัดเจนทันที: ไม่มีโค้ดใดที่ไม่มีข้อบกพร่อง... ชีวิตทำงานอย่างนี้แหละ ดังนั้นเราจึงไม่ควรกลายเป็นคนเดินกะโผลกกะเผลกทันทีและยอมแพ้ทุกอย่างหากโค้ดไม่ทำงานอย่างที่เราคาดหวัง แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 2แต่จะทำอย่างไร? แน่นอน คุณสามารถตั้งค่าได้System.out.printlnทุกที่ที่ทำได้ จากนั้นเรียงลำดับเอาต์พุตในเทอร์มินัลโดยหวังว่าคุณจะพบข้อผิดพลาด ถึงกระนั้น ก็เป็นไปได้... และพวกเขาทำได้ และพวกเขาทำอย่างระมัดระวังโดยใช้การบันทึก (คุณสามารถอ่านรายละเอียดได้ ที่นี่ ) แต่ถ้าเป็นไปได้ที่จะรันโค้ดบนเครื่องท้องถิ่น ควรใช้Debugจะ ดีกว่า ฉันอยากจะทราบทันทีว่าในบทความนี้ เราจะพิจารณาการดีบักโปรเจ็กต์ภายใน Intellij IDEA หากคุณสนใจอ่านเกี่ยวกับการดีบักแบบระยะไกล นี่คือบทความ จากแหล่งข้อมูลของเรา

ดีบั๊กคืออะไร

แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 3การแก้ไขข้อบกพร่องเป็นกระบวนการของการดีบัก (ตรวจสอบ) โค้ด เมื่อในระหว่างการดำเนินการ คุณสามารถหยุดที่สถานที่ที่กำหนดและดูความคืบหน้าของการดำเนินการได้ เข้าใจสถานะของโปรแกรมในบางจุด มันเหมือนกับว่าคุณสามารถหยุดชีวิตและมองทุกสิ่งจากภายนอกได้ เจ๋งใช่มั้ย? เป้าหมายของเราคือการเรียนรู้วิธีดีบักแอปพลิเคชันอย่างรวดเร็วและง่ายดายโดยใช้ Intellij IDEA สภาพแวดล้อมการพัฒนาที่เราชื่นชอบ

สิ่งที่คุณต้องมีเพื่อเริ่มการดีบัก

ฉันให้คำแนะนำฟรี: ในขณะที่คุณกำลังอ่านบทความ ให้ทำทุกอย่างที่จะอธิบายไว้ที่นี่ โชคดีที่มีทุกอย่างสำหรับเรื่องนี้ อะไรที่คุณต้องการ:
  1. สภาพแวดล้อมการพัฒนา Intellij IDEA เวอร์ชัน 2019.3.1 และสูงกว่า เผื่อใครไม่มี มีลิงค์ให้โหลดครับ ดาวน์โหลด Community Edition เพราะนั่นคือสิ่งที่ฉันจะใช้
  2. โคลนโปรเจ็กต์จาก GitHubและนำเข้าผ่าน IDEA
เปิด IDEA: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 4เลือก โปรเจ็กต์ การนำเสนอการแก้ไขข้อ บกพร่อง คลิกตกลงและรับ: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 5ออกจากโปรเจ็กต์การนำเข้าจากแหล่งภายนอก Mavenแล้วคลิกเสร็จสิ้น หลังจากนำเข้าโครงการแล้ว เราสามารถอธิบายกระบวนการโดยใช้ตัวอย่างสดได้

ทฤษฎีเล็กๆ น้อยๆ...ผมสัญญา :D

ในการเริ่มแก้ไขจุดบกพร่องเล็กน้อย คุณต้องเข้าใจว่าจุดพัก คืออะไร และทำความเข้าใจปุ่มลัดสองสามปุ่มที่คุณต้องใช้ในการเริ่มต้น เบรกพอยต์เป็นเครื่องหมายพิเศษที่แสดงตำแหน่งหรือสถานะที่ควรหยุดแอปพลิเคชัน คุณตั้งค่าเบรกพอยต์ได้ด้วยการคลิกซ้ายที่แถบด้านข้าง ซ้ายหรือคลิกตำแหน่งโค้ดแล้วกดCtrl + F8 เบรกพอยต์มีสามประเภท: เครื่องหมายเส้น เครื่องหมายตัวแปร และเครื่องหมายวิธีการ ดูเหมือนว่านี้:
  • ต่อบรรทัด:

    แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 6

    หากมีแลมบ์ดาในนิพจน์ IDEA จะเสนอทางเลือกให้คุณ - ใส่นิพจน์บนทั้งบรรทัดหรือเฉพาะเจาะจงในแลมบ์ดา:

    แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 7
  • ต่อวิธี:

    แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 8
  • ต่อชั้นเรียน

    แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 9
เบรกพอยต์สามารถลบออกได้โดยทำตามขั้นตอนเดียวกับเมื่อเพิ่มเบรกพอยต์ มีบางสถานการณ์ที่คุณต้องทำให้ไม่ทำงาน (ปิดเสียง) เมื่อต้องการทำเช่นนี้ ในส่วนแก้ไขข้อบกพร่อง คุณจะพบไอคอน แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 10ที่จะทำให้เบรกพอยต์ทั้งหมดไม่ทำงาน หากต้องการดูว่าเบรกพอยท์ใดถูกตั้งค่าไว้แล้ว คุณสามารถไปที่ Debug ที่มุมล่างซ้ายแล้วค้นหาไอคอน แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 11หรือกดCtrl+Shift+F8 : แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 12เมื่อเราไปที่รายการเบรกพอยท์ เราจะเห็น: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 13มีจุดสั่งล่วงหน้าสองจุด ที่นี่:
  • Bee.java:24 - ในคลาส Bee ออนไลน์ 24
  • Main.java:14 - ในคลาส Main ที่บรรทัด 14
ฉันอยากจะทราบว่าเมื่อคุณโคลนโปรเจ็กต์ คุณจะไม่มีเบรกพอยต์เหล่านี้: คุณต้องตั้งค่าด้วยตัวเอง! นอกจากนี้ ยังมี ส่วน จุดพักข้อยกเว้น Java สิ่งที่มีประโยชน์มาก เมื่อใช้มัน คุณสามารถเพิ่มเบรกพอยต์โดยนัยเพื่อให้โปรแกรมหยุดก่อนที่จะส่งข้อยกเว้นหรือรายการใดรายการหนึ่งโดยเฉพาะ มาเพิ่มเบรกพอยต์โดยนัยสำหรับ RuntimeException ทำได้ง่ายๆ: ที่มุมซ้ายบนจะมีเครื่องหมายบวก "+" คลิกที่มันและเลือกเบรกพอยต์ข้อยกเว้น Java : แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 14ในหน้าต่างที่ปรากฏขึ้น ให้เขียนชื่อของข้อยกเว้นที่ต้องเพิ่ม เลือกจากรายการที่เสนอแล้วคลิกตกลง : แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 15เราเสร็จสิ้นโปรแกรมการศึกษานี้และเดินหน้าต่อไป

ไปกันเถอะ บุกเข้าไปในป่าของการดีบักกันเถอะ

แก้ไขข้อบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 16เนื่องจากฉันเป็นคนเลี้ยงผึ้งตามกรรมพันธุ์ สำหรับการนำเสนอการแก้ไขจุดบกพร่อง ฉันจึงสร้างโครงการที่อธิบายกระบวนการเก็บน้ำหวานด้วยผึ้ง การแปรรูปน้ำหวานให้เป็นน้ำผึ้ง และการได้น้ำผึ้งจากรัง จากเอกสารประกอบของไฟล์ README ซึ่งอยู่ในรากของโครงการ เราได้อ่าน: พฤติกรรมที่คาดหวัง - จากดอกไม้ทั้งหมดที่ใช้เก็บน้ำหวาน (เป็น ค่า สองเท่า ) ปริมาณน้ำผึ้งจะถูกรวบรวมเท่ากับครึ่งหนึ่งของ น้ำหวานที่รวบรวมไว้ โครงการมีชั้นเรียนดังต่อไปนี้:
  • Bee - ผึ้งงานธรรมดา
  • BeeQueen - ราชินีผึ้ง;
  • รังผึ้ง - รังผึ้ง;
  • HoneyPlant - พืชน้ำผึ้งที่เก็บน้ำผึ้ง
  • หลัก - ตำแหน่งที่public static void main()วิธีการที่โครงการเริ่มต้นตั้งอยู่
หากคุณเรียกใช้เมธอดmain()ปรากฎว่าไม่เพียงแต่ไม่นับปริมาณน้ำผึ้งเท่านั้น แต่ยังเกิดข้อผิดพลาดด้วย... แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 17คุณต้องดูว่ามีอะไรผิดปกติที่นั่น จากการติดตามสแต็กที่มุมขวาล่าง เราจะเห็นว่าในHoneyPlant.java:20RuntimeException ถูกส่งออกไป: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 18นี่เป็นกรณีของเราอย่างแน่นอน: มี RuntimeException มาเพิ่มการค้นหาข้อยกเว้นดังกล่าวดังที่อธิบายไว้ข้างต้น และเรียกใช้main()เมธอดใน โหมดแก้ไขข้อบกพร่อง ในการดำเนินการนี้ให้คลิกที่ลูกศรสามเหลี่ยมสีเขียวใน Intellij IDEA ก่อนวิธีการmain(): แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 19และเราจะรับโปรแกรมที่หยุดทำงานในขณะนี้ก่อนที่จะเรียกใช้ข้อยกเว้นด้วยไอคอนนี้ แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 20แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 21. หากต้องการรับข้อมูลที่ครบถ้วนคุณต้องดูในส่วนแก้ไขข้อบกพร่อง มันมีVariablesซึ่งแสดงตัวแปรทั้งหมดที่มีอยู่ในส่วนนี้ของแอปพลิเคชัน:
  • น้ำหวาน = 1.0;
  • น้ำหวานความจุ = -1.0.
มีข้อยกเว้นอย่างยุติธรรม เนื่องจากมูลค่าของปริมาณน้ำหวานที่อยู่ในต้นน้ำผึ้งไม่สามารถเป็นค่าลบได้ แต่ทำไมสิ่งนี้ถึงเกิดขึ้น? ท้ายที่สุด มีการตรวจสอบว่าหากน้ำหวานหมด ค่าศูนย์จะถูกส่งกลับในบรรทัดที่ 15-17:
if ( nectar == 0 ) {
         return 0;
}
แต่สิ่งที่จับได้คือมันกำลังตรวจสอบตัวแปรที่ผิด... และนี่คือจุดบกพร่องในโค้ด แทนที่จะตรวจสอบค่าของน้ำหวานในดอกไม้ซึ่งอยู่ใน ตัวแปร NectarCapacityโปรแกรมจะตรวจสอบค่าของน้ำหวานที่เข้ามาในเมธอดและเป็นปริมาณที่ต้องการดึงจากน้ำหวาน นี่ไง แมลงตัวแรก! ดังนั้นเราจึงใส่มันให้ถูกต้องและรับนิพจน์:
if ( nectarCapacity == 0) {
         return 0;
}
ต่อไปเรารันmain()วิธีการในโหมดปกติ(Run `Main.main()`)และไม่มีข้อผิดพลาดอีกต่อไป โปรแกรมทำงาน: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 22แอปพลิเคชันทำงานและให้คำตอบ: “น้ำผึ้ง 33.0 ผลิตโดยผึ้ง 7 ตัวจากต้นน้ำผึ้ง 2 ต้น” ทุกอย่างจะดี แต่คำตอบคือ ผิด... ทั้งหมดเป็นเพราะในเอกสารประกอบไฟล์ README มีเขียนไว้ว่าน้ำหวานกลายเป็นน้ำผึ้งในอัตราส่วน 2 ต่อ 1:
## 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มาดูจุดนี้กันดีกว่า โปรแกรมหยุดก่อนที่จะดำเนินการบรรทัดที่ 28 ที่ด้านล่างสุดเราจะเห็นส่วน Debug ซึ่งอธิบายข้อมูลทั้งหมดในแอปพลิเคชันที่ทำงานอยู่ ส่วนของตัวแปร ดังที่กล่าวไปแล้ว ประกอบด้วยตัวแปรและออบเจ็กต์ทั้งหมดที่สามารถเข้าถึงได้จากส่วนนี้ของแอปพลิเคชัน ส่วนเฟรมจะแสดงขั้นตอนที่แอปพลิเคชันดำเนินการ คุณสามารถดูขั้นตอนก่อนหน้าและรับข้อมูลในเครื่องทั้งหมดได้ เพื่อให้โปรแกรมทำงานต่อไปคุณสามารถกดF9หรือไอคอนสีเขียวดังที่แสดงด้านล่าง: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 24หากต้องการหยุดโปรแกรมคุณต้องคลิกที่สี่เหลี่ยมสีแดง: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 25หากต้องการรีสตาร์ทแอปพลิเคชันในโหมดแก้ไขข้อบกพร่องคุณต้องคลิกที่ลูกศร: แก้ไขจุดบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 26ถัดไป หากต้องการดูแอปพลิเคชันทีละขั้นตอน คุณสามารถใช้สองปุ่ม:
  • F8 - อ่านโค้ดบางส่วนและอย่าใช้วิธีภายใน
  • F7 - ไปที่ส่วนของโค้ดแล้วป้อนวิธีการภายใน
ดังนั้นเพื่อเข้าสู่วิธีการ ดำเนินการbeeHive.populateHoney()เราต้องกด F7 แล้วเราจะไปต่อ: แก้ไขข้อบกพร่องใน Intellij IDEA: คำแนะนำสำหรับผู้เริ่มต้น - 27ต่อไปเราจะเข้าสู่โหมดแก้ไขข้อบกพร่องโดยใช้F8 โดยใช้ วิธีนี้จนจบและอธิบายสิ่งที่เกิดขึ้นในวิธีนี้:
  • บรรทัดที่ 25 - Stream API ใช้เพื่อรวบรวมน้ำผึ้งจากผึ้งทั้งหมด
  • บรรทัดที่ 26 - น้ำผึ้งถูกเติมเข้าไปในบรรทัดที่มีอยู่
  • บรรทัดที่ 27 - น้ำผึ้ง 2 หน่วยถูกจัดสรรให้กับราชินี
  • บรรทัดที่ 28 - สองหน่วยนี้จะถูกลบออกจากจำนวนน้ำผึ้งทั้งหมด
  • บรรทัดที่ 29 - มดลูกกินน้ำผึ้งนี้
นั่นคือที่ที่ทั้งสองหน่วยไป ไชโย! หลังจากสื่อสารกับนักวิเคราะห์ธุรกิจแล้ว เราได้ข้อสรุปว่าเอกสารประกอบในไฟล์ README มีข้อผิดพลาดและจะต้องได้รับการอัปเดต มาอัปเดตไฟล์ README กัน:
## 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 hub ต่อไปได้อย่างใจเย็นด้วยรูปลักษณ์ที่ชาญฉลาด :)

สรุป

ในบทความนี้เราพบว่า:
  • ไม่มีงานใดที่ปราศจากข้อผิดพลาดและการดีบักเป็นวิธีที่ดีในการแก้ไข
  • เบรกพอยต์คืออะไรและมีประเภทใดบ้าง
  • วิธีการกำหนดค่าเบรกพอยต์ข้อยกเว้น
  • วิธีนำทางในโหมดแก้ไขข้อบกพร่อง

บทความน่าอ่าน

ดูบทความอื่น ๆ ของฉันด้วย:
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION