การติดตามย้อนกลับ
การติดตามย้อนกลับกำลังหาจุดสิ้นสุดไปยังเหตุการณ์ที่เกี่ยวข้องกับสถานที่ (ดูด้านล่าง) เมื่อถึงจุดพักจุดพักจะถูกวางในดีบักเกอร์ คุณลักษณะนี้ถูกเรียกใช้และเมื่อโปรแกรมดีบั๊กหยุดทำงาน สแตกการโทรได้รับการตรวจสอบเพื่อย้อนกลับการติดตามเส้นทางการโทร ในขณะที่เดินขึ้นไปที่กองโทรคุณสามารถจดบันทึกสถานะตัวแปรหรือวางจุดพักใหม่เพื่อตรวจสอบเหตุการณ์อีกครั้ง
คุณลักษณะนี้ถูกเรียกใช้อีกครั้งและตัวดีบักหยุดที่จุดพักใหม่ จากนั้นคุณสามารถทำการติดตามย้อนกลับซ้ำหรือทำการติดตามไปข้างหน้าจนกว่าจะพบเป้าหมาย
ข้อเสียข้อดี
- มันง่ายกว่าเสมอที่จะเดินขึ้นไปบนสแต็คการโทรและดูว่าคุณไปไหนมาไหนได้บ้าง
- อาจมีหลายล้านเงื่อนไขที่ต้องเป็นจริงก่อนถึงจุดสิ้นสุด หากคุณทราบจุดสิ้นสุดแล้วคุณได้ช่วยตัวเองทำงานมากมาย
- หากคุณสมบัติผิดปกติ คุณอาจไม่ถึงจุดสิ้นสุดและเวลาอาจเสียเวลาลองคิดดูว่าทำไม
การค้นหาปลายทาง
ในการดีบักคุณลักษณะที่คุณต้องรู้ว่าในซอร์สโค้ดนั้นบรรลุเป้าหมายขั้นสุดท้ายได้อย่างไร จากจุดนี้คุณสามารถย้อนกลับเพื่อดูว่าโค้ดมาถึงอย่างไร ตัวอย่าง; เพื่อให้เข้าใจถึงวิธีการเลิกทำการ คุณรู้ว่าสิ่งใดในโค้ดที่ยกเลิกได้ แต่คุณไม่รู้ว่าสิ่งต่าง ๆ อยู่ตรงไหน นี่จะเป็นตัวเลือกสำหรับการbacktracingเพื่อค้นหาว่าคุณลักษณะนี้ทำงานอย่างไร
ติดตามไปข้างหน้า
การติดตามไปข้างหน้าคือการหาจุดเริ่มต้นสำหรับเหตุการณ์ที่เกี่ยวข้องกับสถานที่ (ดูด้านล่าง) เมื่อนั้นข้อความการบันทึกจะถูกแทรกลงในซอร์สโค้ดหรือจุดพักถูกตั้งค่า กระบวนการนี้ทำซ้ำในขณะที่คุณดำเนินการห่างไกลจากจุดเริ่มต้นจนกว่าคุณจะค้นพบเป้าหมายสำหรับคุณลักษณะ
ข้อเสียข้อดี
- เป็นจุดเริ่มต้นที่ง่ายที่สุดในการค้นหาสถานที่
- ความซับซ้อนของรหัสจะลดประสิทธิภาพของการติดตามไปข้างหน้า ยิ่งมีรหัสมากเท่าไหร่โอกาสที่คุณจะไปในทิศทางที่ผิดก็จะยิ่งมากขึ้นเท่านั้น
- การติดตามไปข้างหน้ามักส่งผลให้เกิดการตั้งค่าเบรกพอยต์ซึ่งจะถูกเรียกใช้โดยเหตุการณ์ที่ไม่เกี่ยวข้อง การขัดจังหวะกระบวนการตรวจแก้จุดบกพร่องและรบกวนการค้นหาของคุณ
เริ่มการค้นหาจุด
คุณสามารถใช้คำสำคัญตัวระบุส่วนต่อประสานผู้ใช้ (ID ปุ่มชื่อหน้าต่าง) หรือง่ายต่อการค้นหาผู้ฟังเหตุการณ์ที่เกี่ยวข้องกับคุณสมบัติ ตัวอย่างเช่นคุณอาจเริ่มต้นด้วยปุ่มที่ใช้เพื่อเรียกใช้คุณสมบัติการเลิกทำ
กระบวนการกำจัด
คุณสามารถคิดว่านี้เป็นจุดกลางเมื่อเทียบกับจุดเริ่มต้นและจุดสิ้นสุดตำแหน่ง คุณดำเนินการขั้นตอนของการกำจัดเมื่อคุณรู้อยู่แล้วว่าชิ้นส่วนของรหัสที่มีการใช้ในคุณลักษณะ แต่มันก็เป็นค่าเริ่มต้นหรือสิ้นสุดของคุณลักษณะ
ทิศทางที่คุณใช้จากจุดกึ่งกลางนั้นขึ้นอยู่กับจำนวนการเข้าและออก หากมีการใช้โค้ดกลุ่มในหลาย ๆ พื้นที่การติดตามกลับจากตำแหน่งนี้อาจใช้เวลานานเนื่องจากต้องตรวจสอบทั้งหมด จากนั้นคุณใช้กระบวนการกำจัดเพื่อลดรายการนี้ ทางเลือกคุณสามารถดำเนินการติดตามไปข้างหน้าจากจุดนี้ แต่อีกครั้งหากโค้ดกลุ่มแยกออกไปหลาย ๆ ที่นี่อาจเป็นปัญหาได้เช่นกัน
คุณต้องลดทิศทางของตำแหน่งโดยไม่ติดตามเส้นทางที่เห็นได้ชัดว่าจะไม่ถูกดำเนินการสำหรับคุณสมบัติ การย้ายที่ผ่านมาของรหัสนี้และเพียงวางจุดพักซึ่งมีความเกี่ยวข้องกับคุณลักษณะ
การดีบักจุดกลางมักต้องการคุณสมบัติ IDE ขั้นสูง ความสามารถในการดูลำดับชั้นของรหัสและการอ้างอิง หากไม่มีเครื่องมือเหล่านั้นก็ยากที่จะทำ
ข้อเสียข้อดี
- จุดกึ่งกลางมักจะเป็นรหัสชิ้นแรกที่ปรากฏขึ้นในหัวของคุณเมื่อคุณนึกถึงคุณลักษณะ คุณพูดกับตัวเองว่า "อ่านั่นต้องใช้ XXXX ในการทำงาน"
- จุดกลางสามารถเปิดเผยจุดเริ่มต้นที่ง่ายที่สุด
- จุดกึ่งกลางอาจเป็นวิธีที่ง่ายในการรับเส้นทางไปยังสถานที่เมื่อสูญเสียจากการซิงโครไนซ์หรือการเปลี่ยนเธรด
- จุดกึ่งกลางสามารถนำคุณไปสู่รหัสที่คุณไม่คุ้นเคย ทำให้คุณเสียเวลาในการเรียนรู้ว่าเกิดอะไรขึ้น