ESP32 exception decoder

Paste the crash from the serial monitor, choose the ELF file of the same build, and get the function and line behind every address. It runs in your browser: nothing is uploaded.

Where the ELF is

It has to be the ELF of the exact build that crashed. After any change and rebuild the code moves, and the same addresses point somewhere else.

What it reads

The same as xtensa-esp32-elf-addr2line -pfiaC -e app.elf ... or riscv32-esp-elf-addr2line, without installing a toolchain, and also for the crash that Arduino IDE 2 no longer decodes for you.

Each known reason is explained too: what a LoadProhibited or a Store access fault usually means, a NULL pointer behind EXCVADDR, stack overflows, watchdogs. For a whole log, use the log analyzer; for a core dump, the core dump decoder.

For devices that are not on your desk

This needs the crash text, and a crash in the field prints it to a serial port nobody is reading. Pinscope keeps it across the reboot, sends it on the next connection and decodes it with the ELF you upload, matched to the build that crashed, so the dashboard shows the lines without anyone at the device. How that works.

Try it

Three devices are free, and no card is needed. Create an account, or read the five-minute guide first.

More