Rust:
In ra thông tin gỡ lỗi

Cách thực hiện:

Để in ra một cái gì đó đơn giản, sử dụng println!. Nếu bạn cần in một giá trị để gỡ lỗi, dbg! sẽ rất tiện lợi.

fn main() {
    let mut vec = vec![1, 2, 3];
    
    // In cơ bản
    println!("Xin chào, các Rustaceans!");

    // Định dạng gỡ lỗi với println! sử dụng `{:?}`
    println!("{:?}", vec);

    // Gỡ lỗi với `dbg!`, in ra stderr và trả về giá trị
    dbg!(&vec);

    // Sửa đổi vec sau khi sử dụng `dbg!`
    vec.push(4);
    dbg!(vec);
}

Kết quả mẫu:

Xin chào, các Rustaceans!
[1, 2, 3]
[src/main.rs:9] &vec = [
    1,
    2,
    3,
]
[src/main.rs:13] vec = [
    1,
    2,
    3,
    4,
]

Đi sâu vào vấn đề

Việc in thông tin gỡ lỗi là một phần đơn giản của lập trình từ những ngày đầu. Sự đơn giản của nó thường làm cho nó trở thành lựa chọn hàng đầu để chẩn đoán nhanh các vấn đề.

Trong Rust, println! tuyệt vời để hiển thị thông điệp thân thiện với người dùng. Điều thú vị nằm ở dbg!, được giới thiệu trong Rust 1.32, in cả giá trị và vị trí của nó trong mã. Đầu ra là lỗi chuẩn (stderr), vì vậy nó sẽ không trộn lẫn với đầu ra chuẩn (stdout) và có thể được chuyển hướng riêng biệt nếu cần.

Đối với các kiểu phức tạp, bạn có thể derive Debug trait để tự động tạo một định dạng mà println!dbg! có thể sử dụng. Đó là những gì annotation #[derive(Debug)] làm trên các structs và enums của bạn.

Về các lựa chọn khác, có tồn tại các logger chính thống như logenv_logger, và nếu bạn cần kiểm soát một cách chi tiết hơn, xem xét sử dụng một trình gỡ lỗi như gdb hay lldb, hoạt động với Rust thông qua các tích hợp như rust-gdb hoặc rust-lldb.

Tham khảo thêm

Để biết thêm về các tùy chọn in và định dạng gỡ lỗi của Rust: