- ดีบักเกอร์ย้อนเวลา ที่ใช้งานง่ายและรองรับภาษาโปรแกรมหลากหลาย
- บันทึกการทำงานของโปรแกรมเพื่อสร้างไฟล์เทรซแบบแยกอิสระที่แชร์ได้ และสามารถเลื่อนการทำงานไปข้างหน้าหรือย้อนกลับในสภาพแวดล้อม GUI พร้อมตรวจสอบประวัติของทุกตำแหน่งหน่วยความจำได้
- ข้อดีของการดีบักแบบย้อนเวลา
- แก้บั๊กที่ทำซ้ำได้ยากได้อย่างง่ายดาย : หากมีบันทึกการรันที่เกิดบั๊ก ก็สามารถหาสาเหตุได้ภายใน 30 นาที
- เมื่อรู้ที่มาของค่า ก็จะแก้บั๊กได้ง่ายขึ้น
- หากเกิดผลลัพธ์ที่ไม่คาดคิดในโปรแกรม สามารถคลิกอีเวนต์นั้นเพื่อดูจุดที่ปัญหาเกิดขึ้นได้ทันที
- CodeTracer รองรับการติดตามว่าค่านั้นถูกสร้างขึ้นมาจากที่ใด เพื่อช่วยค้นหาต้นตอที่แท้จริงของบั๊กได้ด้วยการเลื่อนไปมาเพียงไม่กี่ครั้ง
- สามารถเลื่อนไปข้างหน้าหรือย้อนกลับเพื่อสำรวจได้อย่างอิสระในทุกช่วงเวลาของการทำงานของโปรแกรม
- การเทรซใช้ฟอร์แมตแบบเปิด และกำลังมีโปรเจ็กต์รองรับภาษาอย่าง Ruby, Python เป็นต้น
- มีแผนรองรับการดีบักภาษาสำหรับ system programming เช่น C/C++, Rust, Nim, D, Zig, Go, Fortran, FreePascal เป็นต้น โดยผสานรวมกับแบ็กเอนด์ RR
ฟีเจอร์หลักของ CodeTracer
ดีบักแบบรอบรู้ทั้งหมด (Omniscience)
- ตรวจสอบค่าตัวแปรในอดีตและอนาคตได้ทันทีจากบรรทัดโค้ดใดก็ได้ระหว่างการทำงาน
- สำรวจการเปลี่ยนแปลงค่าตัวแปรภายในลูปได้อย่างง่ายดาย
- แยกความแตกต่างระหว่างโค้ดที่ถูกรันแล้วกับโค้ดที่ไม่ถูกรันได้อย่างชัดเจน
Tracepoints
- ตรวจสอบการเปลี่ยนแปลงค่าตัวแปรภายในโปรแกรมได้ทันทีโดยไม่ต้องรันโค้ดเพิ่มเติม
- เพิ่มเงื่อนไข การเรียกฟังก์ชัน การแสดงผลข้อมูล ฯลฯ เพื่อใช้ดีบักได้อย่างง่ายดาย
Call Trace
- ไม่ใช่แค่สแต็กเทรซธรรมดา แต่แสดงต้นไม้การเรียกฟังก์ชันของการทำงานทั้งโปรแกรม
- สำรวจได้ง่ายด้วยการกรองและการเรียงลำดับ
การสำรวจสถานะและประวัติ (State and History Explorer)
- ติดตามประวัติการเปลี่ยนแปลงค่าของตัวแปรทั้งหมดได้
- ย้ายไปยังจุดในโค้ดที่ค่าของตัวแปรถูกเปลี่ยนได้ทันที
- ติดตามค่าเดิมของตัวแปรที่ถูกคัดลอกโดยอัตโนมัติ ช่วยให้วิเคราะห์บั๊กได้ง่ายขึ้น
บันทึกเหตุการณ์ (Event Log)
- แสดงเหตุการณ์สำคัญในโปรแกรมเรียงตามลำดับเวลา
- คลิกอีเวนต์ใดก็ได้เพื่อย้ายไปยังโค้ดในช่วงเวลานั้นทันที
เอาต์พุตเทอร์มินัล (Terminal Output)
- บันทึกและแสดงผล
stdout, stderr เสมือนเทอร์มินัล เพื่อดูเอาต์พุตของโปรแกรมที่ถูกบันทึกไว้
- คลิกเพื่อย้ายไปยังตำแหน่งโค้ดที่ทำให้เกิดเอาต์พุตนั้นได้อย่างแม่นยำ
Mouse Stepping
- ใช้เมาส์เพื่อย้ายไปยังส่วนต่าง ๆ ของโค้ดได้ทันที
- ย้ายตามบรรทัด: คลิกกลางเมาส์ (สามารถใช้
Ctrl+클릭 ได้)
- เข้าสู่ฟังก์ชัน: ดับเบิลคลิกที่การเรียกฟังก์ชันเพื่อเข้าไปภายใน (สามารถใช้
Ctrl+Alt+클릭 ได้)
- ตัวเลือกเพิ่มเติม: สำรวจฟังก์ชันเสริมได้จากเมนูคลิกขวา
Scratchpad
- ปักหมุดค่าตัวแปรในช่วงเวลาหนึ่งเพื่อใช้เปรียบเทียบและวิเคราะห์ได้
- วิเคราะห์ปัญหาด้วยการเปรียบเทียบลำดับการทำงานของโค้ดในเชิงภาพ
คำสั่ง CodeTracer CLI
ct run <application> - รันโปรแกรมและบันทึกอัตโนมัติ
ct record <application> - สร้างไฟล์เทรซ
ct replay - เล่นไฟล์เทรซที่สร้างไว้
ct replay <program-name> - โหลดบันทึกการรันครั้งล่าสุด
ct replay --id=<trace-id> - รันด้วย Trace ID ที่ระบุ
ct replay --trace-folder=<trace-folder> - รันไฟล์เทรซในโฟลเดอร์ที่กำหนด
ct help / ct --help - ดูคำสั่งที่ใช้งานได้
ct version - ตรวจสอบเวอร์ชันปัจจุบัน
คีย์ลัด
- คีย์ลัดเริ่มต้นออกแบบมาให้คุ้นเคยสำหรับผู้ใช้ Visual Studio™
- มีฟังก์ชันย้อนกลับของความสามารถดีบักเดิมโดยใช้ปุ่ม
Shift ร่วมกัน (F10 = "สเต็ปถัดไป", Shift+F10 = "สเต็ปก่อนหน้า")
- สามารถปรับแต่งคีย์ลัดได้โดยแก้ไขไฟล์
~/.config/codetracer/.config.yml
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เจ๋งมาก เมื่อก่อนเคยมีโอกาสขอฟีเจอร์กับผู้ออกแบบโปรเซสเซอร์ Intel
debugใหม่เพื่อเพิ่ม tracing และ instrumentationการรองรับ Noir สมเหตุสมผล เพราะ execution trace มีคุณค่าเป็นพิเศษใน ZK proof
ถ้าใช้ Clojure หรือ ClojureScript แนะนำให้ลองดู FlowStorm
Noir เป็นภาษาที่ออกแบบเฉพาะโดเมนสำหรับระบบพิสูจน์แบบ SNARK
สงสัยว่าทำไม CodeTracer ถึงเขียนด้วยสองภาษา
ชอบมาก อยากได้อะไรแบบนี้มาตลอด
ดูเจ๋ง แต่ในระบบโปรดักชันไฟล์ trace น่าจะโตเร็วมาก
ขอบคุณที่ช่วยสร้าง ecosystem ของ Nim
ตื่นเต้นมาก บริจาคผ่าน Open Collective ไปแล้ว
ขอแสดงความยินดีกับการเปิดตัว ทำงานกันได้ยอดเยี่ยมมากจนถึงตอนนี้