How to get a release build with debugging information when using cargo?

As shown in the Cargo documentation, modify the release profile to include debugging symbols:

[profile.release]
debug = true

Note that the release profile and the bench profile differ.

See also

  • Can tests be built in release mode using Cargo?
  • How to compile and run an optimized Rust program with overflow checking enabled
  • Does Cargo support custom profiles?

Or basically any of the top search results for "rust profiling":

  • Rust Profiling with Instruments and FlameGraph on OSX: CPU/Time
  • Profiling Rust applications on Linux
  • Profiling rust code with callgrind

Another option that I found that does not require changing Cargo.toml is to use the RUSTFLAGS environment variable:

$ RUSTFLAGS=-g cargo build --release