ESP32 core dump decoder
Paste the core dump printed between CORE DUMP START and CORE DUMP END, or load the coredump partition read from flash, choose the ELF, and see why it crashed and where every task was. The same as espcoredump.py info_corefile, without Python or GDB.
What it shows
- The crashed task, the crash reason and, on Xtensa chips, the faulting address.
- The backtrace of every task with function, file and line: on the ESP32, S2 and S3 from the register windows saved on the stack; on the C2, C3, C5, C6, H2 and P4 unwound with the ELF's DWARF call frame information, as GDB does.
- Whether the ELF you chose is the one the firmware was built from: the core dump carries the start of its SHA-256.
- The registers of each task.
It reads core dumps in the ELF format, the default since ESP-IDF 4.1, with a CRC32 or SHA-256 checksum. Nothing is uploaded.
Getting a core dump
- Over the UART: set Core dump destination to UART in menuconfig (
CONFIG_ESP_COREDUMP_ENABLE_TO_UART). After a crash the base64 text is printed to the serial monitor; copy it from the START line to the END line. - To flash: set it to Flash (
CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH) and add acoredumppartition of 64 KB to the partition table. Read the partition withesptool.py read_flash <offset> <size> core.bin, or with the web flasher's backup and the offset from the partition table.
For devices that are not on your desk
Pinscope keeps the crash of a device in the field across the reboot, sends it on the next connection and decodes it with the ELF you uploaded, matched to the build that crashed.
Try it
Three devices are free, and no card is needed. Create an account, or read the five-minute guide first.
More
- Remote access to an ESP32 without TLS: what it measured and what it costs
- Reaching an ESP32 web server from outside its network
- Updating ESP32 firmware over the internet, with rollback
- Guru Meditation Error: decoding the backtrace, and crashes from the field
- Remote logging: ESP_LOG without a serial cable
- Heap and stack monitoring in the field
- An ESP32 behind CGNAT, 4G or Starlink
- TLS memory usage on the ESP32, and how to reduce it
- Sharing an ESP32 sensor page with anyone, without port forwarding
- ArduinoOTA over the internet, with a rollback
- ESP32 remote access compared: port forwarding, ngrok, Cloudflare Tunnel, Tailscale
- esp_http_server slow? The 250 ms delay and the fix
- Before the first ESP32 ships: a field support checklist
- ESP32 exception decoder: a Guru Meditation backtrace to lines, in the browser