การดีบักเป็นเครื่องมือที่มีประโยชน์มากสำหรับการตรวจสอบสถานะของวัตถุและตัวแปรในรหัสของคุณ ณ รันไทม์
ตามที่กล่าวไว้ก่อนหน้านี้ในคำตอบข้างต้นการดีบักมีประโยชน์อย่างยิ่ง แต่ก็มีบางกรณีที่มีข้อ จำกัด
จากประสบการณ์ของฉันฉันพบว่าการใช้ตัวดีบักมีประโยชน์มากเพราะช่วยในการเปิดเผยสมมติฐานที่ผิดพลาดที่ฉันทำเกี่ยวกับสถานะของรหัสของฉัน บางคนไม่ฉลาดในการอ่านรหัสเพื่อค้นหาจุดบกพร่องดังนั้นการดีบั๊กสามารถช่วยในการเปิดเผยสมมติฐานที่ผิดพลาดที่คุณหรือผู้พัฒนารายอื่นทำเกี่ยวกับสถานะของรหัส
บางทีคุณอาจคาดหวังว่าพารามิเตอร์จะไม่เป็นโมฆะเมื่อส่งผ่านไปยังเมธอดดังนั้นคุณไม่เคยตรวจสอบเคสและดำเนินการในเมธอดราวกับว่าพารามิเตอร์นั้นจะไม่เป็นโมฆะ ความจริงก็คือพารามิเตอร์นั้นจะจบลงด้วยการเป็นโมฆะในบางจุดแม้ว่าคุณจะตั้งค่าเป็นเงื่อนไขล่วงหน้ากับวิธีการที่พารามิเตอร์ไม่ควรเป็นโมฆะ มันจะเกิดขึ้นเสมอ
ในทางตรงกันข้ามกับประโยชน์ที่ได้จาก debuggers ในตัวอย่างข้างต้นฉันพบว่ามันยากและไม่มีประโยชน์ที่จะใช้เมื่อมีการใช้เธรดแบบมัลติเธรด (เช่นการทำงานพร้อมกันการประมวลผลแบบอะซิงโครนัส) มันสามารถช่วยได้ แต่มันง่ายที่จะสูญเสียการวางแนวของคุณในหมอกแบบมัลติเธรดเมื่อเบรกพอยต์ของจุดดีบั๊กถูกโจมตีในหนึ่งเธรดที่จุด A และเธรดแยกต่างหากที่จุด B นักพัฒนาถูกบังคับให้ดันเบรกพอยต์ใหม่ " กระบวนการคิด "ที่อยู่ด้านบนสุดของ" สแต็ค "ในสมองของเขาและปรับทิศทางตัวเองให้เป็นรหัสที่จุดพักเบรก หลังจากความเกี่ยวข้องของเบรกพอยต์ B ลดลงผู้พัฒนาก็เปลี่ยนกลับไปที่เบรกพอยต์แรกและต้องระลึกถึงสิ่งที่เขา / เธอกำลังมองหาก่อนที่จะก่อให้เกิดเบรกพอยต์บีฉันรู้ว่านี่อาจเป็นคำอธิบายที่สับสน
นอกจากนี้ความไม่แน่นอนของรหัสที่เกิดขึ้นพร้อมกันยังสามารถเบี่ยงเบนความสนใจของนักพัฒนาในการแก้ไขข้อบกพร่องของรหัสที่เกิดขึ้นพร้อมกัน
โดยสรุปในความเห็นที่ซื่อสัตย์ของฉัน:
- การดีบักเมื่อใช้งานพร้อมกัน = เพิ่มแนวโน้มที่จะสูญเสียโฟกัสของ "รูปแบบการคิดแก้จุดบกพร่อง"
และ
- ทุกเวลาอื่น = เพิ่มประสิทธิภาพการแก้ไขข้อบกพร่อง b / c ความสนใจของคุณไม่ถูกขัดจังหวะโดยเบรกพอยต์ที่ไม่คาดคิด (ไม่คาดคิดเนื่องจากสภาพการแข่งขัน)