How to get a release build with debugging informat

2019-03-17 07:00发布

问题:

The following command

$ cargo build

produces a non-optimized build with debugging information. On the contrary,

$ cargo build --release

produces an optimized build without debugging information.

Is there a way of producing an optimized build with debugging information? I need this to get meaningful profiling information.

回答1:

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

[profile.release]
debug = true

See also

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

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


回答2:

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

$ RUSTFLAGS=-g cargo build --release