probe-rs logo

probe-rs

Free

a modern, embedded debugging toolkit, written in Rust

FreeFree tier
Type
Open Source

About probe-rs

A modern, embedded debugging toolkit written in Rust, providing a library and tools for interacting with embedded MCUs and debug probes. It offers a direct interface to debug probes, enabling other software to use its debug functionality. The project includes tools for flashing and debugging: cargo extensions, a VS Code extension (MS-DAP), a GDB server, and a standalone CLI. Supports ARM, RISC-V, and Xtensa cores via SWD or JTAG, connects to DAPLink, STLink, JLink, FTDI probes, ESP32 USB JTAG, WLink, and Blackmagic probe. Can read/write memory, halt/run/step cores, operate breakpoints, enable trace, and download ELF, BIN, and IHEX binaries using CMSIS-Pack flash algorithms. The recommended tool for most projects is 'probe-rs run', which flashes firmware, resets the target, and streams RTT/defmt output.

Key Features

Supports ARM, RISC-V, and Xtensa cores via SWD or JTAG
Connects to DAPLink, STLink, JLink, FTDI probes, ESP32 USB JTAG, WLink, and Blackmagic probe
Read and write arbitrary memory of the target
Halt, run, step, and set breakpoints, enable trace functionality
Download ELF, BIN, and IHEX binaries using standard CMSIS-Pack flash algorithms
Debug via CLI, VSCode (MS-DAP), and GDB
Includes tools: probe-rs run, cargo-embed, cargo-flash
Integrated as a Cargo runner for seamless 'cargo run' experience

Pros & Cons

Pros
  • Open source and free to use
  • Supports a wide range of debug probes and target architectures
  • Multiple tool interfaces (CLI, VS Code, GDB) for flexibility
  • Seamless integration with Cargo for Rust projects
  • Active community and regular releases
Cons
  • Limited to embedded MCU targets (ARM, RISC-V, Xtensa)
  • Requires a compatible debug probe and basic understanding of embedded debugging
  • Some probes may have limited support or require specific firmware
  • Not a general-purpose debugger for desktop or server applications

Best For

Flashing embedded firmware to MCUsDebugging embedded applications with breakpoints and memory inspectionStreaming RTT/defmt output and panics back to the consoleRunning firmware as a Cargo runner for rapid development iterationReprogramming and debugging via CLI, VS Code, or GDB

FAQ

What debug probes does probe-rs support?
probe-rs supports DAPLink, STLink, JLink, FTDI probes, ESP32 devices with USB JTAG, WLink, and the Blackmagic probe.
What architectures can probe-rs debug?
It supports ARM, RISC-V, and Xtensa cores using SWD or JTAG protocols.
How do I flash firmware with probe-rs?
You can use the cargo-flash tool or 'probe-rs run' as a Cargo runner to flash ELF, BIN, or IHEX binaries using CMSIS-Pack flash algorithms.
Does probe-rs support debugging via IDE?
Yes, it provides a VS Code extension (MS-DAP) and can be used with GDB through its GDB server.