// the find
klonyyy/MCUViewer
Real-time embedded variable & trace viewer
MCUViewer is a GUI debugger for ARM Cortex-M microcontrollers that reads variable values directly from RAM via SWD debug probes (STLink/JLink) and visualizes SWO trace data in real time. It fills the gap left by ST's abandoned STMStudio — same concept but cross-platform, C++ friendly, and with actual trace support. The catch: it went closed-source after v1.1.0, so this repo is a historical snapshot.
Non-intrusive variable reading via debug interface means zero firmware overhead — no UART, no RTT buffer, no code changes required. SWO trace viewer handles both digital profiling (enter/exit markers) and analog signal capture with a single register write per sample, which is genuinely useful for high-frequency signals that the variable viewer can't keep up with. The ELF parsing approach for auto-importing variable addresses is practical — you point it at your build artifact and it finds globals automatically rather than making you enter addresses by hand. Test suite covers core data structures (ring buffer, scrolling buffer, trace decoder) which is more than most embedded GUI tools bother with.
The repo is frozen at v1.1.0 — the project went proprietary, so bug fixes, new probe support, and new MCU families are not coming here. Only global variables are supported since addresses must be static; anything heap-allocated, stack-local, or in a dynamic structure is invisible to the tool. 64-bit types (uint64_t, double) are explicitly unsupported and tracked as an open issue, which is a real gap for anyone doing fixed-point math with 64-bit accumulators. The Windows build requires MSYS2/MinGW with a specific toolchain setup that's fiddly to get right, and the STLink USB mode quirk (must be 'Debug + Mass Storage + VCP', not just 'Debug + VCP') will silently waste an hour of someone's time.