คุณลักษณะและแนวทางปฏิบัติในการดีบัก IDE ที่สามารถปรับปรุงกระบวนการดีบักของคุณได้

การดีบักเป็นหนึ่งในสิ่งที่สำคัญที่สุดในกระบวนการพัฒนา ไม่เพียงเพราะการแก้ไขจุดบกพร่องต้องใช้เวลาเกือบตลอดเวลา การดีบักยังมีประโยชน์มากในระหว่างการสร้างตรรกะทางธุรกิจ การเขียนอัลกอริธึม และการทดสอบโค้ด

เริ่มต้นด้วยพื้นฐาน เบรกพอยต์มี 4 ประเภทใน IntelliJ IDEA

จุดพักบรรทัด

หยุดแอปพลิเคชันเมื่อถึงบรรทัดโค้ดที่เพิ่มไว้ เบรกพอยต์ประเภทนี้สามารถเพิ่มได้เฉพาะในบรรทัดโค้ดที่ปฏิบัติการได้เท่านั้น หากบรรทัดมีนิพจน์ lambda คุณสามารถเลือกได้ว่าต้องการตั้งค่าจุดพักบรรทัดปกติหรือไม่ หรือควรหยุดโปรแกรมเฉพาะเมื่อมีการเรียกใช้ lambda เท่านั้น

เบรกพอยต์ของเมธอด

หยุดแอปพลิเคชันเมื่อเข้าหรือออกจากวิธีการที่ระบุหรือการใช้งานอย่างใดอย่างหนึ่ง ช่วยให้คุณสามารถตรวจสอบเงื่อนไขการเข้า/ออกของวิธีการได้ เบรกพอยต์ประเภทนี้อาจทำให้กระบวนการแก้ไขจุดบกพร่องช้าลงอย่างมาก ดังนั้นควรระมัดระวังและใช้เมื่อคุณต้องการเท่านั้น

เบรกพอยต์ข้อยกเว้น

หยุดแอปพลิเคชันเมื่อ Throwable.class หรือคลาสย่อยถูกส่งออกไป

จุดเฝ้าระวังภาคสนาม

หยุดแอปพลิเคชันเมื่อมีการอ่านหรือเขียนฟิลด์ที่ระบุ สิ่งนี้ช่วยให้คุณตอบสนองต่อการโต้ตอบกับตัวแปรอินสแตนซ์เฉพาะได้ ตัวอย่างเช่น ลองดูว่าคุณสมบัติถูกเตรียมใช้งานอย่างไร หรือวิธีใดที่เปลี่ยนค่าของมัน

หากต้องการสร้างเบรกพอยต์ให้ใช้ทางลัด Ctrl + F8 ขึ้นอยู่กับตำแหน่งที่คุณทำเช่นนี้ จุดพักที่แตกต่างกันจะถูกสร้างขึ้น (บรรทัด วิธีการ หรือฟิลด์)
หากต้องการดูรายการเบรกพอยต์ทั้งหมด ให้ใช้ Ctrl + Shift + F8

คุณลักษณะนี้สามารถช่วยคุณประหยัดเวลาได้ ขอบคุณตัวเลือกนี้ คุณไม่จำเป็นต้องค้นหาเบรกพอยต์ของคุณและลบเบรกพอยต์ออกด้วยตนเอง หากเบรกพอยต์หยุดการเรียกใช้โค้ดเมื่อคุณไม่ต้องการ นอกจากนี้ยังช่วยให้คุณปิดการใช้งานเบรกพอยต์ได้อีกด้วย เบรกพอยต์ที่ปิดใช้งานจะไม่หยุดโค้ดของคุณในระหว่างการดีบัก แต่เมื่อคุณต้องการ คุณสามารถเปิดใช้งานอีกครั้งได้อย่างง่ายดาย ดังนั้นคุณจึงไม่จำเป็นต้องจำตำแหน่งสำคัญทั้งหมดในโปรเจ็กต์ และทุกครั้งที่สร้างและลบเบรกพอยต์
นอกจากนี้ ในหน้าต่างนี้ คุณสามารถกำหนดค่าเบรกพอยต์ทั้งหมดของคุณได้:

ระงับ

กำหนดว่าจะหยุดการทำงานของแอปพลิเคชันเมื่อถึงจุดพักหรือไม่ มีสองค่าที่เป็นไปได้ทั้งหมด/เธรด หากเลือก ทั้งหมด เธรดทั้งหมดจะถูกระงับเมื่อเธรดใด ๆ ถึงจุดพัก หากเป็น เธรด เฉพาะเธรดที่กระทบจุดพักเท่านั้นที่ถูกระงับ

เงื่อนไข

ตัวเลือกนี้ช่วยให้คุณสามารถระบุเงื่อนไขที่จะตรวจสอบทุกครั้งที่ถึงจุดพัก หากเงื่อนไขส่งคืนค่า true การดำเนินการที่ระบุจะถูกดำเนินการ ถ้าไม่เช่นนั้น เบรกพอยต์จะถูกข้ามไป

ตามเงื่อนไข คุณสามารถใช้:

  • คำสั่งหลายรายการ รวมถึงการประกาศ ลูป คลาสที่ไม่ระบุชื่อ และอื่นๆ
  • this (เฉพาะในบริบทที่ไม่คงที่) เช่น !(this instanceof User)
  • ตรวจสอบค่าบูลีนหรือนิพจน์

ตัวเลือกการบันทึก

เมื่อถึงจุดพักแล้ว สิ่งต่อไปนี้สามารถบันทึกลงในคอนโซลได้:

  • ข้อความ “ถึงจุดพัก”: ข้อความบันทึกถึงเรา Breakpoint reached at package.User.main(User.java:10)
  • การติดตามสแต็ก: การติดตามสแต็กสำหรับเฟรมปัจจุบัน สิ่งนี้มีประโยชน์ถ้าคุณต้องการตรวจสอบว่ามีการเรียกใช้เมธอดใดก่อนที่จะถึงจุดพัก
  • ประเมินและบันทึก: ผลลัพธ์ของนิพจน์ที่กำหนดเอง เช่น "Creating..." หรือ users.size()

ลบออกเมื่อโดน

กำหนดว่าควรลบเบรกพอยต์ออกจากโครงการหลังจากถึงจุดนั้นแล้วครั้งหนึ่งหรือไม่

ปิดการใช้งานจนกว่าจะถึงจุดพักต่อไปนี้

ปิดใช้งานเบรกพอยต์ปัจจุบันจนกว่าจะถึงเบรกพอยต์ที่ระบุ
คุณยังสามารถเลือกได้ว่าควรปิดใช้งานเบรกพอยต์หลังจากสิ่งนี้เกิดขึ้นหรือไม่

ตัวกรอง

JetBrains IDE ช่วยให้คุณสามารถกำหนดค่าการดำเนินการเบรกพอยต์โดยการกรองคลาส/อินสแตนซ์/เมธอดออก และหยุดแอปพลิเคชันเฉพาะเมื่อจำเป็นเท่านั้น

มีตัวกรองประเภทต่อไปนี้:

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

การเข้าถึง/แก้ไขข้อมูลภาคสนาม

  • การเข้าถึงฟิลด์:เลือกตัวเลือกนี้เพื่อให้จุดเฝ้าระวังทำงานเมื่อมีการอ่านฟิลด์
  • การแก้ไขฟิลด์:เลือกเพื่อให้จุดเฝ้าระวังทำงานเมื่อมีการเขียนฟิลด์ถึง

จำนวนผ่าน

กำหนดว่าเบรกพอยต์ควรทำงานหลังจากถึงจำนวนครั้งที่ระบุแล้วเท่านั้น สะดวกสำหรับการดีบักลูปหรือวิธีการเรียกซ้ำ

ข้อยกเว้นที่ตรวจพบ/ไม่ถูกตรวจจับ

  • ข้อยกเว้นที่ตรวจพบ:เลือกเพื่อให้เบรกพอยต์ทำงานเมื่อตรวจพบข้อยกเว้นที่ระบุ
  • ข้อยกเว้นที่ไม่ได้รับการตรวจสอบ:เลือกเพื่อให้เบรกพอยต์ทำงานเมื่อตรวจไม่พบข้อยกเว้นที่ระบุ วิธีนี้ช่วยให้คุณทราบสาเหตุของข้อยกเว้นที่ไม่สามารถจัดการได้

แนวทางปฏิบัติที่ดีที่สุดของเบรกพอยต์

ใช้เบรกพอยต์เพื่อบันทึกการดีบัก ห้ามใช้ System.out.println

ใช้เบรกพอยต์การบันทึกแทนการเพิ่ม System.out.print ในโค้ดของคุณ นี่เป็นวิธีที่ยืดหยุ่นมากขึ้นสำหรับการบันทึกแอปพลิเคชันของคุณ และป้องกันไม่ให้คุณจากโค้ดที่สกปรกและการเปลี่ยนแปลงโค้ดโดยไม่ตั้งใจในคอมมิตคอมไพล์

ใช้ทางลัดเพื่อเพิ่มเบรกพอยท์ ซึ่งจะช่วยประหยัดเวลาได้มาก

การใช้ทางลัดเป็นมุมมองที่ดีสำหรับการพัฒนาที่มีประสิทธิผลมากขึ้น อย่าลืมเกี่ยวกับพวกเขา

จัดระเบียบเบรกพอยต์ของกลุ่ม

คุณสามารถสร้างกลุ่มของเบรกพอยท์ได้ ตัวอย่างเช่น หากคุณต้องการทำเครื่องหมายเบรกพอยท์สำหรับปัญหาเฉพาะ ในกล่องโต้ตอบ เบรกพอยท์ (Ctrl+Shift+F8) ให้เลือกเบรกพอยท์ที่คุณต้องการเพิ่มลงในกลุ่ม และเลือก ย้ายไปยังกลุ่ม

ค้นหาสาเหตุของข้อผิดพลาดร้ายแรง

เบรกพอยต์ข้อยกเว้นใช้ได้กับ Throwable.class คุณสามารถเพิ่มเงื่อนไขที่จะช่วยให้คุณหยุดการเรียกใช้โค้ดเฉพาะเมื่อมีการโยน Error.class เท่านั้น หรือคุณสามารถจำกัดให้แคบลงเหลือ MyCustomException.class ก็ได้

อย่าใช้เมธอดเบรกพอยต์เมื่อไม่จำเป็น

จุดพักของเมธอดอาจทำให้การรันโค้ดของคุณช้าลงอย่างมาก ซึ่งอาจขโมยเวลาของคุณได้มากมาย

อย่าลบเบรกพอยต์ออกทั้งหมด

หากคุณไม่ต้องการเบรกพอยต์เฉพาะในขณะนี้ อย่าลบเบรกพอยต์ออกทั้งหมด คุณก็สามารถปิดการใช้งานได้ มันอาจจะประหยัดเวลาได้มากในอนาคต เมื่อคุณต้องทดสอบบล็อกโค้ดเดียวกัน คุณไม่จำเป็นต้องค้นหามันในโปรเจ็กต์ขนาดใหญ่ คุณสามารถเปิดใช้งานเบรกพอยต์เดิมได้อีกครั้ง

เพิ่มคำอธิบายให้กับเบรกพอยต์

มันสามารถช่วยให้คุณเข้าใจว่าทำไมคุณถึงต้องการเบรกพอยต์นี้ในเบรกพอยต์จำนวนมาก

ก้าวผ่านโปรแกรม

การก้าว เป็นการดำเนินโปรแกรมทีละขั้นตอน

เมื่อการรันโค้ดหยุดบนเบรกพอยต์ของคุณ คุณสามารถเลื่อนผ่านโค้ดด้วยขั้นตอนประเภทต่างๆ คุณสามารถดูแผงขั้นตอนด้านบนได้

มาดูรายละเอียดแต่ละขั้นตอนกันดีกว่า

ก้าวข้าม(F8)

ก้าวข้ามบรรทัดโค้ดปัจจุบันและนำคุณไปยังบรรทัดถัดไป การดำเนินการตามวิธีการจะถูกข้ามไป และคุณย้ายไปยังบรรทัดถัดไปของวิธีการปัจจุบัน

ก้าวเข้าสู่(F7)

ขั้นตอนภายในวิธีการแสดงโค้ดภายใน ตัวเลือกนี้จะสะดวกเมื่อคุณไม่แน่ใจว่าวิธีการส่งกลับค่าที่ถูกต้อง

ก้าวออก(Shift + F8)

ออกจากวิธีปัจจุบันและนำคุณไปยังวิธีผู้โทร

วิ่งไปที่เคอร์เซอร์ (Alt + F9)

ดำเนินการแอปพลิเคชันต่อไปยังตำแหน่งเคอร์เซอร์ปัจจุบัน

บังคับก้าวข้าม (Shift+Alt+F8)

ก้าวข้ามบรรทัดโค้ดปัจจุบันและนำคุณไปยังบรรทัดถัดไป หากมีจุดพักในวิธีการที่เรียกว่า ก็จะถูกละเว้น

ดรอปเฟรม

ช่วยให้คุณสามารถเลิกทำเฟรมสุดท้ายและกู้คืนเฟรมก่อนหน้าในสแต็ก วิธีนี้จะสะดวก เช่น หากคุณก้าวไปไกลเกินไปโดยไม่ได้ตั้งใจ หรือต้องการเข้าสู่ฟังก์ชันที่คุณข้ามบล็อกโค้ดที่สำคัญ

โปรแกรมดำเนินการต่อ(Ctrl + F9)

ดำเนินการแอปพลิเคชันของคุณต่อไปยังเบรกพอยต์ถัดไป

หน้าต่างเครื่องมือแก้ไขข้อบกพร่อง

เมื่อคุณเริ่มกระบวนการแก้ไขจุดบกพร่อง หน้าต่างเครื่องมือ แก้ไขจุดบกพร่อง จะปรากฏขึ้น หน้าต่างนี้ใช้สำหรับควบคุมเซสชันการแก้ไขข้อบกพร่อง การแสดงและการวิเคราะห์ข้อมูลโปรแกรม และการดำเนินการแก้ไขข้อบกพร่องต่างๆ

ในหน้าต่างนี้ คุณสามารถดูออบเจ็กต์ คุณสมบัติ ข้อยกเว้น ค่า ฯลฯ ที่สร้างขึ้นได้ จะสะดวกเมื่อคุณต้องการให้แน่ใจว่าคุณสมบัติทั้งหมดเริ่มต้นอย่างถูกต้อง วิธีพารามิเตอร์ที่ได้รับ หรือดูที่สแต็กข้อยกเว้น ติดตาม.

ทำตามขั้นตอนแนวทางปฏิบัติที่ดีที่สุดของโปรแกรม

ใช้ Step Into แม้กับวิธีการจากไลบรารีภายนอก

บางครั้งไลบรารีภายนอกอาจมีข้อบกพร่องเช่นกัน การดีบักไลบรารีภายนอกสามารถช่วยให้คุณค้นหาโค้ดที่ไม่ถูกต้องและรายงานไปยังผู้พัฒนาไลบรารีนี้ได้ หรือปัญหาอาจอยู่ในสิ่งอื่น ตัวอย่างเช่น หากเมธอดจากไลบรารีภายนอกส่งคืนค่าที่ไม่คาดคิด ให้เข้าไปที่เมธอดนั้นเพื่อหาสาเหตุของพฤติกรรมนี้ อาจเป็นเพราะเมธอดเท่ากับ/แฮชโค้ด/ฯลฯ ของอ็อบเจ็กต์ไม่ถูกต้อง หรือบางทีบางคลาสของไลบรารีนี้อาจเป็น แทนที่ในโครงการของคุณ

ใช้ แสดงจุดดำเนินการ

หากคุณสูญเสียจุดที่การเรียกใช้โค้ดของคุณหยุดลง ให้ใช้แสดงจุดดำเนินการ (Alt + F10)เพื่อย้ายไปยังจุดพักที่ถึง

ลองดูที่สแต็คของการโทร

บางครั้งสาเหตุของพฤติกรรมที่ไม่คาดคิดอาจมาจากจุดที่คุณไม่มีจุดพัก ลองดูที่สแต็กของการเรียกเพื่อดูว่ามีการดำเนินการวิธีการใดบ้าง มันสามารถช่วยให้คุณค้นหาอันที่ไม่ถูกต้องได้ นอกจากนี้ หากคุณนำทางไปยังวิธีอื่นผ่านการเรียกแบบสแต็ก คุณจะสามารถดูพารามิเตอร์ที่วิธีนี้ได้รับก่อนหน้านี้

การประเมินการแสดงออก

นอกจากนี้ IntelliJ IDEA ยังช่วยให้คุณประเมินนิพจน์บนเบรกพอยต์ได้ เป็นวิธีที่สะดวกมากในการดูว่าวิธีการนั้นทำงานอย่างไรกับค่าอื่นๆ

ในการประเมินนิพจน์ ให้ใช้ปุ่ม Alt + F8 หรือ ประเมิน

การประเมินแนวทางปฏิบัติที่ดีที่สุด

ประเมินทุกอย่าง

หากคุณต้องการทดสอบวิธีการของคุณด้วยค่าที่แตกต่างกัน อย่าสร้างออบเจ็กต์ด้วยตนเองและรีสตาร์ทแอปพลิเคชัน คุณสามารถประเมินวิธีการด้วยค่าเหล่านี้ได้ ซึ่งจะช่วยประหยัดเวลาได้มาก และคุณจะเห็นคุณสมบัติทั้งหมดของ วัตถุที่ส่งคืน

ผู้ประเมินสามารถดำเนินการได้ทุกอย่าง

IntelliJ IDEA ช่วยให้คุณสามารถประเมินไม่เพียงแต่วิธีการในเครื่องของคุณเท่านั้น แต่ยังรวมถึงวิธีการภายนอกที่แตกต่างกันหรือ java.* อีกด้วย ผู้ประเมินยังสามารถดำเนินการวิธีการที่ส่งคำขอไปยังบริการอื่นได้ ดังนั้นคุณจึงสามารถดูการตอบกลับโดยละเอียดได้

ระวังสตรีมด้วย

หากคุณอ่านสตรีมของคุณครั้งหนึ่งในตัวประเมิน สตรีมจะถือว่าอ่านแล้ว ดังนั้นอาจทำให้เกิดข้อผิดพลาดหากแอปพลิเคชันของคุณพยายามอ่านอีกครั้ง

บางครั้งการ Debbunging ก็เป็นกระบวนการที่น่ารำคาญและยืดเยื้อ แต่เป็นสิ่งที่ขาดไม่ได้สำหรับนักพัฒนาทุกคน และ IntelliJ IDEA มอบคุณสมบัติและตัวเลือกที่ทำให้สะดวกสบาย ง่าย และมีประสิทธิภาพยิ่งขึ้น เราอาจชอบหรือไม่แก้ไขจุดบกพร่องก็ได้ แต่นี่คือสิ่งที่ต้องใช้เวลาส่วนใหญ่ในการพัฒนา

และท้ายที่สุดแล้ว การปฏิบัติที่สำคัญที่สุด

ลืมปุ่ม Run ไปได้เลย ใช้เฉพาะ Debug หากคุณเป็นนักพัฒนาซอฟต์แวร์ 😀