A Rust-native debugger built from the same element as Rust itself.
Ferros (from ferrum — Latin for iron) is a next-generation debugger designed specifically for the Rust programming language.
Unlike traditional debuggers that retrofit C-style semantics onto Rust programs, Ferros is built from the ground up to understand Rust's unique memory model, lifetimes, ownership system, and mid-level intermediate representation (MIR).
To give Rust developers a first-class, language-native debugging experience — fast, intuitive, and designed for Rust's safety guarantees.
Ferros aims to become the Rust ecosystem's standard debugging platform, complementing cargo and integrating cleanly with editors, IDEs, and build tools.
While existing Rust debugging solutions are either platform-limited or retrofitted from C/C++ debuggers, Ferros is built from the ground up for Rust developers.
| Solution | Limitations |
|---|---|
| BugStalker | Linux-only, no macOS or Windows support |
| GDB/LLDB | C/C++ semantics, doesn't understand Rust's ownership model |
| CodeLLDB | Generic debugger extension, no Rust-specific features |
Ferros brings:
- ✅ Cross-Platform First: macOS support now, with Linux and Windows planned
- ✅ Rust-Native Understanding: Built to understand ownership, lifetimes, borrows, and MIR
- ✅ MIR-Level Debugging: Debug at the compiler's intermediate representation
- ✅ Hybrid Architecture: Combines symbolic debugging and interpreted execution
- ✅ Modern Design: Designed for Rust's safety guarantees from day one
Ferros is currently in active development with core infrastructure in place.
See ROADMAP.md for detailed development milestones and progress tracking.
Ferros is structured as a workspace of multiple crates, each with a specific responsibility:
ferros/
├── crates/
│ ├── ferros/ # Command-line interface
│ ├── ferros-core/ # Low-level debugging primitives & process control
│ ├── ferros-mir/ # MIR integration & analysis
│ ├── ferros-ui/ # Optional TUI/GUI for visualization
│ ├── ferros-protocol/ # Communication layer
│ └── ferros-utils/ # Shared utilities & helpers
📖 Learn more: See ARCHITECTURE.md for detailed architecture documentation.
Note: Ferros is currently in early development. Installation and usage instructions will be available in future releases.
Once available, you'll be able to:
# Install via cargo
cargo install ferros
# Debug your Rust project
cargo ferros launch <program> [args...]- Rust: Edition 2021 (Rust 1.56.0 or newer)
- macOS: 10.9+ (Mavericks) for Intel Macs, 11.0+ (Big Sur) for Apple Silicon
- Linux: Planned (ptrace support)
- Windows: Planned (WinDbg API support)
Note: On macOS, debugging other processes requires either:
- Running with
sudo, or- Granting debugging entitlements (
com.apple.security.cs.debugger)
- Architecture — Deep dive into Ferros' design and structure
- Roadmap — Development milestones and planned features
- Contributing — Guidelines for contributing to Ferros
We welcome contributions! Ferros is built with ❤️ by the Rust community.
Check out CONTRIBUTING.md.
Licensed under the Apache License.
Ferros draws inspiration from:
- The Rust compiler's MIR representation
- Existing debuggers like
gdb,lldb, andrr - Projects like
probe-rsandmiri
Ferros — built from the same element as Rust.