使用 Cargo 时如何获得带有调试信息的发布版本?

问题描述 投票:0回答:3

以下命令

$ cargo build

生成非优化构建以及调试信息。相反,

$ cargo build --release

生成优化的构建,没有调试信息。

有没有办法生成带有调试信息的优化构建?我需要它来获取有意义的分析信息。

rust rust-cargo
3个回答
120
投票

Rust 1.57 开始,Cargo 现在允许 自定义配置文件。这允许您定义自己的配置文件来添加调试信息:

[profile.release-with-debug] inherits = "release" debug = true
您可以在构建时使用该配置文件:

% cargo build --profile=release-with-debug Compiling buggin v0.1.0 (/tmp/buggin) Finished release-with-debug [optimized + debuginfo] target(s) in 0.48s
在此版本之前,或者如果您

总是想要获得调试信息,您可以修改release

配置文件以包含调试符号:

[profile.release] debug = true
请注意,

release

 配置文件和 
bench
 配置文件不同。

另请参阅

  • 可以使用 Cargo 在发布模式下构建测试吗?
  • 如何在启用溢出检查的情况下编译和运行优化的 Rust 程序
  • Cargo 支持自定义配置文件吗?
或者基本上是“rust profiling”的任何热门搜索结果:

  • 在 OSX 上使用 Instruments 和 FlameGraph 进行 Rust 分析:CPU/时间
  • 在 Linux 上分析 Rust 应用程序
  • 使用 callgrind 分析 Rust 代码

91
投票
我发现不需要更改

Cargo.toml

 的另一个选项是使用 
RUSTFLAGS
 环境变量:

$ RUSTFLAGS=-g cargo build --release
    

0
投票
如果您想使用通常不包含调试信息的现有配置文件(例如发布版),但仅为单个构建添加调试信息,则可以使用

CARGO_PROFILE_<profile_name>_DEBUG

 
环境变量。示例:

CARGO_PROFILE_RELEASE_DEBUG=true cargo build --release


    

© www.soinside.com 2019 - 2024. All rights reserved.