ESP32 Bench
Boards: ESP32, S3, C3
Flash and monitor: Web Serial
← All errors

How to decode an ESP32 Backtrace

CrashesRecognised by the crash translator

What it looks like

Backtrace: 0x400d1a2b:0x3ffb1f10 0x400d2c3d:0x3ffb1f30 0x400d8f4e:0x3ffb1f50

What it means

Each pair is a program counter and a stack pointer. The first address in each pair names a place in your firmware; read together they are the chain of calls that led to the crash, newest first. They only become file names and line numbers with the .elf file from the same build.

Likely causes

  • A backtrace follows every panic, abort and assert. It is the clue, not the problem.

How to fix it

  1. Arduino IDE 2: install the "ESP Exception Decoder" extension, paste the backtrace into it, and it uses the sketch's last build.
  2. PlatformIO: add monitor_filters = esp32_exception_decoder to platformio.ini and the monitor decodes automatically.
  3. By hand: xtensa-esp32-elf-addr2line -pfiaC -e firmware.elf 0x400d1a2b 0x400d2c3d (use riscv32-esp-elf-addr2line for the ESP32-C3).
  4. The .elf must come from exactly the build that is on the board; rebuild and reflash if unsure.

Paste your full log

The lines around the error usually say more. Paste everything from the reset to the backtrace and the crash translator explains each part. It runs in your browser; nothing is sent anywhere.

    From the hall of flames

    • Crash right after setup: The code used an object before it was set up, most often a sensor or display whose begin() failed and was not checked.