Debugging

Debugging Rust applications is also possible using different tools that will be covered in this chapter.

Refer to the table below to see which chip is supported in every debugging method:

probe-rsOpenOCD
ESP32
ESP32-C2
ESP32-C3
ESP32-C6
ESP32-H2
ESP32-S2
ESP32-S3

⚠️ Note: Xtensa support is still a work in progress, see probe-rs#2001 for more information.

USB-JTAG-SERIAL Peripheral

Some of our recent products contain the USB-JTAG-SERIAL peripheral that allows for debugging without any external hardware debugger. More info on configuring the interface can be found in the official documentation for the chips that support this peripheral:

  • ESP32-C3

    • The availability of built-in JTAG interface depends on the ESP32-C3 revision:
      • Revisions older than 0.3 don't have a built-in JTAG interface.
      • Revisions 0.3 (and newer) do have a built-in JTAG interface, and you don't have to connect an external device to be able to debug.
      • The ESP32-C3 Devkit C doesn't expose the JTAG interface over USB by default, see the ESP32-C3 debugging docs to configure the board for debugging or consider using the esp32c3-rust-board instead.

    To find your ESP32-C3 revision, run:

    cargo espflash board-info
    # or
    espflash board-info
    
  • ESP32-C6

  • ESP32-H2

  • ESP32-S3