memprobe

See where every byte goes.

Drop in an ELF or linker map. Get a full symbol breakdown in seconds.

Your binaries stay in your session and are never stored.
firmware.elf
Flash used
0 KB
of 512 KB (36%)
RAM used
0 KB
of 128 KB (32%)
Symbols
0
across 38 source files
Duplicate symbols
0
~3.2 KB recoverable flash
Largest symbols by flash
mbedtls_sha256_process .text
14.2 KB
HAL_UART_IRQHandler .text
8.8 KB
font_DejaVuSans_16px .rodata
7.3 KB
lwip_tcp_input .text
5.4 KB
g_rx_dma_buffer .bss
4.0 KB
Float printf linked (_printf_float). ~8 KB flash. Drop -u _printf_float if unused.
Works with
GCC Clang IAR EWARM ARM Cortex-M RISC-V Xtensa STM32 ESP32 Nordic nRF .elf .axf .map FreeRTOS Zephyr mbedTLS

Built for engineers who ship firmware.

Find the bytes. Fix the bloat. Track every build.

Source line attribution

DWARF maps every symbol back to its file and line. No grep.

Build diffs

See which symbols grew, shrank, appeared, or disappeared between any two builds.

Bloat warnings with fixes

Catches float printf, exception tables, duplicate strings. Each warning tells you the exact flag to flip.

Trends across commits

Group builds by project, set budgets, watch flash and RAM over time.

Interactive treemap

Click to drill into any section or symbol. See what is actually packing your binary.

Share read-only links

One click. An opaque URL. No login on the other end.

C++ and library aware

Mangled names get demangled. Known libraries (mbedTLS, lwIP, FreeRTOS) grouped automatically.

Export anywhere

JSON, CSV, TOML, or XML. Pipe it into your CI dashboard.

Speaks your toolchain

GCC, Clang, IAR EWARM. ELF and AXF on ARM, RISC-V, Xtensa, AVR.