Avatar ·

如何构建带调试信息(debug symbols)的 Rust release 项目?

大家好!我开始学习 Rust,正在编写一个用于处理文件的小型控制台应用程序。调试时我通常运行 `cargo run`,但当我想检查真实数据上的性能时,我使用 `cargo build --release`。问题在于,当程序在 release 构建中崩溃时,我得到的堆栈跟踪(stack trace)完全没用。我没有看到正常的函数名和行号,只看到内存地址,而 `backtrace` 函数输出类似 `0x55a2b3c4d5e6` 的内容,而不是 `my_module::process_file`。 以下是一个会崩溃并报错的示例代码: ```rust use std::fs; fn main() { let data = fs::read_to_string("config.toml").unwrap(); let parsed: Vec = data .split(',') .map(|s| s.trim().parse::().unwrap()) .collect(); println!("{:?}", parsed); } ``` 在 debug 模式下,我能看到确切的崩溃位置:`called `Result::unwrap()` on an `Err` value: ParseIntError`。在 release 模式下,我只能看到 `thread 'main' panick`