rustrust-cargo

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


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.


Solution

  • As of Rust 1.57, Cargo now allows for custom profiles. This allows you to define your own profile that adds debug information:

    [profile.release-with-debug]
    inherits = "release"
    debug = true
    

    You can then use that profile when building:

    % cargo build --profile=release-with-debug
       Compiling buggin v0.1.0 (/tmp/buggin)
        Finished release-with-debug [optimized + debuginfo] target(s) in 0.48s
    

    Prior to this version, or if you always wanted to have debugging information, you can modify the release profile to include debugging symbols:

    [profile.release]
    debug = true
    

    Note that the release profile and the bench profile differ.

    See also

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