-
Ứng dụng của C-Reduce
- C-Reduce là công cụ do Regehr và các cộng sự phát triển, được dùng để tối giản trình tái hiện lỗi của trình biên dịch C.
- Ví dụ, nó hữu ích khi bạn muốn rút gọn một tệp C dài 10.000 dòng gây ra lỗi trong Clang.
- C-Reduce không chỉ giới hạn ở ngôn ngữ C mà còn có thể áp dụng cho nhiều ngôn ngữ khác nhau.
-
Yêu cầu của C-Reduce
- Cần có điều kiện mang tính quyết định.
- Nếu có trình tái hiện nhanh thì sẽ giúp tăng tốc độ rút gọn.
- Cần có một hoặc nhiều tệp mã nguồn có thể thay đổi mà C-Reduce có thể rút gọn.
-
Trường hợp lỗi RustPython
- Để báo cáo lỗi xảy ra trong RustPython, tác giả đã viết script
interesting.sh.
- Script này chạy RustPython rồi dùng grep để tìm thông báo lỗi cụ thể.
-
Chạy C-Reduce
- Chạy C-Reduce và đã thành công trong việc giảm kích thước tệp hơn 50%.
- Dùng tùy chọn
--not-c để tránh các pass chuyên biệt cho C và tối ưu cho Python.
- Kết quả là có thể rút gọn tệp nhanh chóng và dễ dàng.
-
Kết luận
- C-Reduce có thể áp dụng cho nhiều ngôn ngữ khác nhau và rất hữu ích để rút gọn tệp một cách nhanh chóng, hiệu quả.
- Đây là một blog mã nguồn mở, nếu có lỗi thì có thể đề xuất chỉnh sửa.
1 bình luận
Ý kiến trên Hacker News
Một người dùng chia sẻ cách rút gọn tệp và giải thích cách thiết lập bằng RustPython và scrapscript
git cloneđể clone RustPython và scrapscript, rồi build bằngcargo build --releaseinteresting.shvà cấp quyền thực thi cho nónix run nixpkgs#creduceđể rút gọn tệpKhuyên dùng C-Reduce, đồng thời gợi ý thử thêm công cụ Shrinkray
Đề cập rằng bài báo về C-Reduce đã được công bố vào năm 2012
Lần đầu biết đến C-Reduce và thấy hứng thú giống như khi lần đầu phát hiện ra git bisect
Tìm thấy một bài viết cho thấy ví dụ về C-Reduce, nhưng khó hiểu cách nó quyết định loại bỏ thứ gì ở mỗi vòng lặp
Đánh giá C-Reduce là cực kỳ hữu ích
Delta debugging không phải là một khái niệm mới
Nó cũng hoạt động tốt với SQL và đang được dùng ở nơi làm việc
Khó tin rằng nó hoạt động được với cả những ngôn ngữ ngoài C nếu không có lời giải thích vì sao
Đề xuất cvise như một công cụ kế nhiệm tốt của C-Reduce