- Trình gỡ lỗi du hành thời gian dễ sử dụng, hỗ trợ nhiều ngôn ngữ lập trình
- Ghi lại quá trình thực thi chương trình để tạo ra tệp trace độc lập có thể chia sẻ, và trong môi trường GUI có thể di chuyển qua lại giữa các bước thực thi để xem lịch sử của mọi vị trí bộ nhớ
- Ưu điểm của gỡ lỗi du hành thời gian
- Có thể dễ dàng xử lý các lỗi khó tái hiện: nếu có bản ghi thực thi tại thời điểm lỗi xảy ra, có thể xác định nguyên nhân trong vòng 30 phút
- Khi biết nguồn gốc của giá trị thì việc sửa lỗi sẽ dễ hơn
- Khi đầu ra bất thường xuất hiện trong chương trình, có thể nhấp vào sự kiện đó để lập tức xác định điểm phát sinh vấn đề
- CodeTracer hỗ trợ truy vết nơi giá trị đó được tạo ra, giúp tìm ra nguyên nhân gốc của lỗi chỉ sau vài lần di chuyển
- Có thể tự do di chuyển tiến lùi và khám phá ở bất kỳ thời điểm nào trong quá trình thực thi chương trình
- Tracing sử dụng định dạng mở, và đang triển khai các dự án hỗ trợ ngôn ngữ như Ruby, Python
- Có kế hoạch hỗ trợ gỡ lỗi cho các ngôn ngữ lập trình hệ thống như C/C++, Rust, Nim, D, Zig, Go, Fortran, FreePascal thông qua tích hợp với backend RR
Các tính năng chính của CodeTracer
Gỡ lỗi toàn tri (Omniscience)
- Có thể lập tức xem giá trị biến trong quá khứ và tương lai tại một dòng mã cụ thể trong lúc thực thi
- Có thể dễ dàng khám phá sự thay đổi giá trị biến trong vòng lặp
- Mã đã thực thi và mã chưa thực thi được phân biệt rõ ràng
Tracepoint
- Có thể lập tức kiểm tra sự thay đổi giá trị biến trong chương trình mà không cần thực thi thêm mã
- Có thể dễ dàng thêm điều kiện, lời gọi hàm, đầu ra dữ liệu để gỡ lỗi
Call Trace
- Không chỉ là stack trace đơn thuần mà còn cung cấp toàn bộ cây lời gọi hàm của quá trình thực thi chương trình
- Có thể dễ dàng khám phá thông qua lọc và sắp xếp
Khám phá trạng thái và lịch sử (State and History Explorer)
- Có thể truy vết lịch sử thay đổi giá trị của mọi biến
- Có thể lập tức chuyển đến vị trí mã nơi giá trị biến đã thay đổi
- Tự động truy vết giá trị gốc của biến đã được sao chép, giúp việc phân tích lỗi dễ dàng hơn
Nhật ký sự kiện (Event Log)
- Cung cấp các sự kiện quan trọng trong chương trình theo thứ tự thời gian
- Khi nhấp vào một sự kiện cụ thể, có thể lập tức chuyển đến đoạn mã tại thời điểm đó
Đầu ra terminal (Terminal Output)
- Tái hiện và ghi lại đầu ra
stdout, stderr như trong terminal để có thể kiểm tra đầu ra chương trình đã được ghi lại
- Khi nhấp vào, có thể chuyển đến chính xác vị trí mã đã tạo ra đầu ra đó
Stepping bằng chuột (Mouse Stepping)
- Có thể dùng chuột để lập tức chuyển đến phần cụ thể trong mã
- Chuyển dòng: nhấp chuột giữa (cũng có thể
Ctrl+클릭)
- Đi vào hàm: nhấp đúp vào lời gọi hàm để đi vào bên trong (cũng có thể
Ctrl+Alt+클릭)
- Tùy chọn bổ sung: có thể khám phá thêm tính năng trong menu chuột phải
Scratchpad
- Có thể cố định giá trị biến tại một thời điểm cụ thể để so sánh và phân tích
- Có thể phân tích vấn đề bằng cách so sánh trực quan luồng thực thi mã
Lệnh CLI của CodeTracer
ct run <application> - chạy chương trình và tự động ghi lại
ct record <application> - tạo tệp trace
ct replay - phát lại tệp trace đã tạo
ct replay <program-name> - tải bản ghi thực thi gần nhất
ct replay --id=<trace-id> - chạy với một ID trace cụ thể
ct replay --trace-folder=<trace-folder> - chạy tệp trace trong một thư mục cụ thể
ct help / ct --help - xem các lệnh có sẵn
ct version - kiểm tra phiên bản hiện tại
Phím tắt bàn phím
- Phím tắt mặc định được thiết kế thân thuộc với người dùng Visual Studio™
- Cung cấp chức năng đảo ngược của các thao tác gỡ lỗi hiện có khi dùng cùng phím
Shift (F10 = "bước tiếp theo", Shift+F10 = "bước trước đó")
- Có thể tùy chỉnh phím tắt bằng cách sửa tệp
~/.config/codetracer/.config.yml
1 bình luận
Ý kiến trên Hacker News
Thật tuyệt. Ngày trước tôi từng có cơ hội gửi yêu cầu tính năng cho các nhà thiết kế bộ xử lý Intel
Việc hỗ trợ Noir là hợp lý vì dấu vết thực thi đặc biệt có giá trị trong ZK proof
Nếu bạn dùng Clojure hoặc ClojureScript, tôi khuyên nên thử FlowStorm
Noir là một ngôn ngữ đặc thù miền dành cho hệ thống chứng minh SNARK
Tôi tò mò vì sao CodeTracer lại được viết bằng hai ngôn ngữ
Tôi thực sự rất thích. Tôi luôn muốn có thứ như thế
Trông rất hay, nhưng trên hệ thống production thì file trace sẽ tăng rất nhanh
Cảm ơn vì đã xây dựng hệ sinh thái Nim
Rất đáng mong đợi. Tôi đã quyên góp trên Open Collective rồi
Chúc mừng ra mắt. Cho đến nay các bạn đã làm rất tuyệt