Debug async Rust code by enabling backtraces and using tokio::task::block_on to inspect state or println! inside await points. Set the environment variable RUST_BACKTRACE=1 to get stack traces on panics, then run your async binary with cargo run. For deeper inspection, wrap your async entry point in block_on and add logging before and after each await to trace execution flow.
export RUST_BACKTRACE=1
cargo run