如何构建带调试信息(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`