1

Nix đã viết một nửa trình gỡ lỗi của tôi

fzakaria.com

Cách đây vài ngày, tôi đã viết về Rewind VM, một VM xác định nơi mỗi lần chạy bản build Nix là một hàm thuần túy của các đầu vào, bao gồm cả lịch trình luồng. Tôi đã dùng nó để tìm, tái hiện và giải quyết nhiều lỗi race condition trong các bản build Nix, nhưng nó khiến tôi cảm thấy hơi kỳ lạ. Tại sao siêu năng lực này lại chưa có ai khác sử dụng? Công cụ này đã nhanh chóng phát triển thêm bảng mã nguồn, stack frame, bookmark, tab Compare, hỗ trợ gdb nhiều hơn, các luồng hiển thị ai đang giữ CPU tại mỗi bước, và tính năng Check from here giúp tìm chính xác bước xảy ra race condition. Khi bắt tay vào mỗi tính năng mới, tôi đều nghĩ sẽ phải viết code rất nhiều nhưng rồi nhận ra phần khó nhất đã được Nix xử lý xong. Ví dụ, một trình gỡ lỗi cần đầu vào chính xác của chương trình, các ký hiệu gỡ lỗi, mã nguồn của nó và của mọi thư viện liên quan, cùng cách để người khác có được tất cả những thứ đó trên máy của họ. Đó chính xác là những gì một derivation thực hiện, và Nix giúp việc đó trở nên dễ dàng. Một ví dụ kinh điển về race condition là hai luồng cùng nạp tiền vào một tài khoản ngân hàng. Mỗi lần nạp sẽ đọc số dư, ghi một dòng vào sổ cái, sau đó lưu số dư mới. Nếu một giao dịch viên xen vào giữa quá trình đọc và lưu của người kia, họ sẽ ghi đè số dư cũ lên khoản tiền nạp của người còn lại.

Đăng nhập để góp ý, chỉnh sửa

Nguồn chính

  1. THẢO LUẬNtuxeslobste.rs
Bản Markdown