كيفية بناء مشروع Rust في وضع الإصدار مع رموز التصحيح (debug symbols)?
مرحباً بالجميع! لقد بدأت في تعلم Rust وأكتب تطبيقاً صغيراً لوحدة التحكم للعمل مع الملفات. للتصحيح، عادةً ما أشغل `cargo run`، ولكن عندما أريد التحقق من الأداء على بيانات حقيقية، أستخدم `cargo build --release`. المشكلة هي أنه عند تعطل البرنامج في بناء الإصدار (release build)، أحصل على تتبع مكدس (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 mode)، أرى الموقع الدقيق للتعطل: `called `Result::unwrap()` on an `Err` value: ParseIntError`. في وضع الإصدار (release mode)، أرى فقط `thread 'main' panicked at 'called `Re