This talk explains how Rust debugging actually works: how compiler-generated debuginfo (DWARF/PDB) maps binaries back to source, and how LLDB/GDB interpret that data in practice.

Debugging Rust can feel opaque when traditional C/C++ debuggers misread enums, traits, and other Rust features. This talk explains how Rust debugging actually works: how compiler-generated debuginfo (DWARF/PDB) maps binaries back to source, and how LLDB/GDB interpret that data in practice. We’ll compare vanilla setups with Rust-specific extensions like pretty-printers, showing why they’re essential for inspecting Option, Result, and collections accurately. You’ll learn the real limits of expression evaluation (including why Debug/Display impls aren’t usable in-session yet) and what emerging techniques, such as compiling expressions to MIR (mid-level intermediate representation), promise for the future. We’ll finish with a practical troubleshooting checklist for breakpoints that don’t hit, variables that “disappear,” mysterious garbage values, and sluggish sessions. Whether you mostly rely on println! or regularly step through threads and stack frames, you’ll leave with a clearer mental model and concrete tactics to make interactive debugging a daily tool, not a last resort.
In this talk, we'll dive deep into what makes concurrency coordination costly, and explore some pathways to mitigate that cost.

What if we took Rust... on-chain? 🦀
This technical talk examines the most prevalent pain points facing Rust web developers today and explores how the community is addressing them.