Rust 的逐步调试器:2024 年如何调试代码?
大家好!我已经用 Rust 写代码几个月了,但始终无法习惯调试。在 Python 中,我只需设置 `import pdb; pdb.set_trace()` 就能轻松地单步执行代码。而在 Rust 中,我感觉自己像只瞎眼的小猫。
这里有一个具体问题。我有一个处理订单的函数:
```rust
fn process_orders(orders: Vec) -> Vec {
orders
.into_iter()
.filter(|o| o.status == OrderStatus::Pending)
.map(|o| {
let discount = calculate_discount(&o);
let total = o.amount - discount;
ProcessedOrder {
id: o.id,
final_price: total,
items_count: o.items.len(),
}
})
.collect()
}
```
我怀疑 `calculate_discount` 返回了错误的值,但无法确定问题所在。`println!` 会在终端输出大量垃圾信息,而 `dbg!` 则使输出变得混乱,无法正常查看状态。