การดีบักแบบย้อนเวลาเป็นความฝันของนักพัฒนามานาน และ CodeTracer กำลังทำให้สิ่งนี้เป็นจริง เริ่มต้นด้วยการรองรับภาษาโปรแกรมมิ่ง Noir เครื่องมือที่เพิ่งเปิดตัวนี้ช่วยให้นักพัฒนาสามารถบันทึกการทำงานของโปรแกรมลงในไฟล์ติดตามแบบครบวงจรที่สามารถตรวจสอบได้ในสภาพแวดล้อม GUI ทำให้สามารถเคลื่อนที่ทั้งไปข้างหน้าและย้อนกลับผ่านการทำงานของโค้ด
การตอบสนองของชุมชนเน้นย้ำความต้องการการรองรับภาษาที่หลากหลายมากขึ้น
ในขณะที่การเปิดตัวครั้งแรกมุ่งเน้นไปที่ Noir ซึ่งเป็นภาษาเฉพาะทางสำหรับระบบพิสูจน์ SNARK ที่ใช้ในการพิสูจน์แบบ zero-knowledge ชุมชนนักพัฒนากำลังรอคอยการรองรับภาษากระแสหลักมากขึ้น ความคิดเห็นจากผู้ใช้เผยให้เห็นถึงความสนใจเป็นพิเศษในภาษา Python, Ruby, JavaScript/TypeScript และภาษาระบบอย่าง Rust และ C++ แผนงานของโครงการรวมถึงการรองรับ Ruby ในเวอร์ชันทดลองที่มีอยู่แล้ว พร้อมแผนการผสานรวม Python ที่กำลังดำเนินการอยู่
ผมต้องการส่วนขยายของ VSCode สำหรับเรื่องนี้ แต่น่าเสียดายที่มันแค่อยู่ในแผนงานของพวกเขา... แบบนี้ก็เป็นประจำ คงต้องลงมือสร้างเองแล้วล่ะ ไม่ใช่ว่าผมมีงานน้อยอยู่แล้ว อย่างน้อยไฟล์ติดตามของพวกเขาก็อยู่ในรูปแบบเปิด ดังนั้นการเชื่อมต่อกับ API การดีบักของ VS Code ก็ไม่น่าจะเป็นไปไม่ได้
ตอบสนองต่อความรู้สึกนี้ ทีม CodeTracer กำลังมองหาผู้ร่วมพัฒนาเพื่อช่วยสร้างส่วนขยายเหล่านี้ แสดงให้เห็นถึงความมุ่งมั่นในการมีส่วนร่วมของชุมชนในการพัฒนาโครงการ
การรองรับภาษาปัจจุบันของ CodeTracer
- รองรับเต็มรูปแบบ: Noir (ภาษาบล็อกเชน/ZK)
- รองรับในระดับทดลอง: Ruby
- อยู่ระหว่างการพัฒนา: Python
- วางแผนในอนาคต: ภาษาสคริปต์หลากหลาย, ภาษาระดับระบบผ่านการผสานรวมกับ rr
แนวทางการนำไปใช้งาน
- ภาษาสคริปต์/บล็อกเชน: แนวทางคล้ายฐานข้อมูลด้วยการติดตั้งเครื่องมือแปลภาษา
- ภาษาระดับระบบ: สร้างบนการบันทึกของ Mozilla's rr (เฉพาะ Linux)
การรองรับแพลตฟอร์ม
- ปัจจุบัน: Linux (หลัก)
- บางส่วน: macOS (สำหรับภาษาสคริปต์/บล็อกเชน)
- อยู่ระหว่างการพัฒนา: Windows (สำหรับภาษาสคริปต์/บล็อกเชน)
การใช้งานทางเทคนิคแตกต่างกันตามประเภทของภาษา
CodeTracer ใช้สองวิธีการที่แตกต่างกันในการบันทึกการทำงานของโปรแกรม สำหรับภาษาสคริปต์และบล็อกเชนเช่น Noir และ Ruby มันจะปรับแต่งตัวแปลโดยใช้ API การเชื่อมต่อระดับสูงหรือแพตช์โดยตรงเพื่อสร้างการติดตาม สำหรับภาษาระบบ ทีมกำลังพัฒนาบนตัวดีบักเกอร์ rr ของ Mozilla ซึ่งสามารถจับกระบวนการหลายอย่างในพื้นที่ผู้ใช้
วิธีการคู่นี้สะท้อนถึงความท้าทายที่แตกต่างกันในการนำการดีบักแบบย้อนเวลาไปใช้ในระบบนิเวศของภาษาต่างๆ แบ็กเอนด์ของภาษาระบบยังคงเป็นซอร์สโค้ดปิดในตอนนี้ แม้ว่าทีมได้แสดงความสนใจในการเปิดซอร์สโค้ดหากพวกเขาสามารถหาโมเดลธุรกิจที่ยั่งยืนได้
![]() |
---|
อินเทอร์เฟซเทอร์มินัลที่แสดงโค้ดและผลลัพธ์การทำงานที่เกี่ยวข้องกับภาษาโปรแกรมมิ่งและการดีบัก สะท้อนให้เห็นถึงความซับซ้อนทางเทคนิคของการใช้งาน CodeTracer |
ข้อกังวลเกี่ยวกับประสิทธิภาพและความสามารถในการใช้งานจริง
การสนทนาในชุมชนเน้นย้ำข้อกังวลเกี่ยวกับขนาดของไฟล์ติดตามและภาระในการประมวลผล โดยเฉพาะสำหรับโปรแกรมที่ทำงานนานขึ้น รูปแบบการติดตามที่อิงกับ JSON ในปัจจุบันได้รับการยอมรับว่าไม่เหมาะสมที่สุด โดยทีมวางแผนที่จะมีรูปแบบที่มีประสิทธิภาพมากขึ้นในเวอร์ชันในอนาคต ผู้แสดงความคิดเห็นหลายคนยังตั้งคำถามเกี่ยวกับความเป็นไปได้ในการใช้การดีบักแบบย้อนเวลาในสภาพแวดล้อมการผลิต ซึ่งไฟล์ติดตามอาจเพิ่มขึ้นอย่างรวดเร็ว
ทีม CodeTracer ได้วางแผนสำหรับแพลตฟอร์มการติดตามแบบกระจายคล้ายกับ Jaeger และ OpenTelemetry ที่จะบันทึกการทำงานอย่างต่อเนื่องในไมโครเซอร์วิสต่างๆ ต่างจากแพลตฟอร์มที่มีอยู่ซึ่งจับเพียงการไหลของข้อความ ระบบของพวกเขาจะช่วยให้สามารถเล่นซ้ำโค้ดการประมวลผลได้อย่างแม่นยำเพื่อระบุสาเหตุของความผิดปกติ
ข้อจำกัดของแพลตฟอร์มข้ามระบบ
ปัจจุบัน แบ็กเอนด์ของภาษาระบบขึ้นอยู่กับ rr ซึ่งใช้ได้เฉพาะบน Linux สร้างข้อจำกัดสำหรับผู้ใช้ macOS และ Windows ทีมกำลังทำงานเพื่อรองรับ Windows สำหรับแบ็กเอนด์ของภาษาสคริปต์และบล็อกเชน โดยที่การรองรับ macOS ยังคงเป็นความท้าทาย ข้อจำกัดของแพลตฟอร์มนี้ได้จุดประกายการอภิปรายเกี่ยวกับปัญหาที่กว้างขึ้นของการมีเครื่องมือดีบักในระบบปฏิบัติการต่างๆ
การดีบักแบบย้อนเวลาไม่ใช่เรื่องใหม่ทั้งหมด - ผู้แสดงความคิดเห็นหลายคนชี้ให้เห็นถึงโซลูชันที่มีอยู่เช่น Flowstorm สำหรับ Clojure, Replay.io สำหรับเบราว์เซอร์ และ Undo สำหรับ Java อย่างไรก็ตาม วิธีการของ CodeTracer ในการสร้างอินเทอร์เฟซที่เป็นหนึ่งเดียวกันในหลายภาษาถือเป็นก้าวที่ทะเยอทะยานในเทคโนโลยีการดีบัก
เมื่อโครงการพัฒนาไป ความสมดุลระหว่างองค์ประกอบโอเพนซอร์สและกรรมสิทธิ์จะมีผลต่อการนำไปใช้ ทีมหลักซึ่งรวมถึงผู้มีส่วนร่วมที่โดดเด่นในภาษาโปรแกรมมิ่ง Nim ได้สร้าง CodeTracer โดยใช้ทั้ง Nim และ Rust โดยอ้างถึงประโยชน์ของการสนับสนุน metaprogramming ของ Nim และการผสานรวมระบบนิเวศของ Rust กับภาษาบล็อกเชน
สำหรับนักพัฒนาที่เบื่อกับการสร้างโค้ดใหม่ด้วยคำสั่งติดตามหรือการสูญเสียบริบทเมื่อก้าวผ่านจุดสำคัญในเซสชันการดีบัก CodeTracer เสนอภาพที่น่าสนใจของอนาคตที่บั๊กเมื่อถูกจับได้แล้ว สามารถถือได้ว่าถูกกำจัดจริงๆ
อ้างอิง: CodeTracer: A User-Friendly Time-Traveling Debugger