Product evaluation
Compare ViewAlyzer
ViewAlyzer matches many core capabilities of Percepio and SEGGER SystemView, and goes further in workflow automation, AI agent control, and live trace tuning. The GUI is just one interface: everything it can do is accessible through the CLI, ready for CI pipelines and automated workflows. We’re building on those strengths and working to close the remaining gaps with every release.
What does recording
cost the application?
The same telemetry workload with recording off, with ViewAlyzer, and with Percepio.
| Measurement | Recorder off | ViewAlyzer | Percepio |
|---|---|---|---|
| CPU busy estimate | 8.293% | 10.412% | 10.803% |
| Receive-to-summary · mean | 56.521 µs | 62.623 µs | 62.853 µs |
| Host reply · median | 340.667 µs | 362.167 µs | 360.633 µs |
| Timer interval error · mean absolute | 0.022 µs | 0.416 µs | 0.261 µs |
| Total allocated RAM | 375,752 B | 396,752 B | 395,264 B |
| Missing application replies · all three runs | 0 | 0 | 0 |
Timing and CPU values are averages of three run-level measurements. CPU includes active probe collection. RAM is allocated memory in a RAM-loaded build, including code and constants. Recorder configurations and event coverage differ; these results describe this workload, not a universal ranking. SEGGER SystemView was not measured in this experiment.
The full report includes every run, charts and variation, code/RAM cost, trace loss, collection settings, and limitations.
ViewAlyzer, Percepio,
and SEGGER SystemView.
Documentation snapshot: 3 August 2026. Capabilities and licensing may change. Use the category links to jump through the matrix and scroll horizontally to see every product.
Compare capture paths, analysis views, automation, and evaluation limits. This is our feature comparison based on the published documentation noted below; question marks mean the documentation did not establish support. For measured recorder overhead, read the telemetry application report.
| Feature | Percepio | SEGGER | Breakpoint | |||
|---|---|---|---|---|---|---|
| ViewFree | ProfilePaid | TracealyzerPaid | SystemViewFree or paid | ViewAlyzer FreeNo license needed | ViewAlyzerLicensed | |
| Probes and transports | ||||||
| Probes and transportsWhat it can capture through | ? | ✓J-Link | ✓Any interface, per their sheet | ✓J-Link for streaming | ✓✓ST-Link, J-Link, CMSIS-DAP, UDP, UART, Custom | |
| Only in ViewAlyzer | ||||||
| Live variable watchingNo firmware instrumentationOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕Data Plot needs the firmware to send the values | ✓100 Hz, 4 symbols | ✓1 kHz and up on a running target. No halt, no reset |
| Math on tracesNode graph of formulas over channelsOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Wire a trace into a formula node and graph the result, live during a capture. A formula can call any of 24 built-in maths functions, reference other channels as variables, look back N samples, and feed its own last output back for IIR filters | |
| Peripheral register browserCMSIS-SVDOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Peripherals, registers and bit fields from your SVD. Tick any of them to poll and graph on a running target | |
| ELF symbol browserOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Searchable, sortable symbol table with a size heat map | |
| Firmware memory analysisFrom the ELF and MAPOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Flash and RAM capacity, section layout, and the largest sections with the linker source that pulled them in | |
| Function call graphOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Built from the ELF: pick a root, set a depth, pan and zoom the graph | |
| Trace fingerprintsRegression checks against a known-good runOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Freeze a good capture as a small fingerprint file that carries a tolerance for every metric, or let it learn normal variance from several runs. Every new capture then gets a pass, warn or fail verdict per metric, in the app and from a CLI compare that fails your CI build on a regression. | |
| IPC message anatomyWhere one message spent its timeOnly in ViewAlyzer | ✕ | ✕ | ✕Aggregate IPC metrics, no per-message pairing | ✕ | ✓✓Every queue send is paired with the receive that dequeued it, every notification and semaphore give with its take. Pick one exchange and see how long it sat in the queue versus how long the consumer took, then jump the timeline zoomed to that exact moment. A full-capture latency scatter marks backlog peaks, so messages that were slow because the queue was deep stand out at a glance. The same per-path pairing stats print from the headless CLI. | |
| MCP server for AI agentsOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓An agent can start a capture, query it, run SQL and read the license state | |
| Token-budgeted query APIBuilt for LLM context limitsOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Three tiers with hard token caps. Ask for too much and you get a fix, never a silent truncation | |
| SQL over a recordingOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Read-only joins and aggregation, from the CLI or from an agent | |
| Any agent drives the live viewModel agnostic, no plugin per vendorOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕The control port can start, stop and export, not move the view | ✓✓Tool calls and a harness, not a plugin for one vendor's model, so point whatever agent you already use at it. Available to demo, and licensable if you want it inside your own IDE or agent | |
| Python client packageOnly in ViewAlyzer | ✕ | ✕ | ✕ | ✕ | ✓✓Python bindings to script captures, replay and analysis, with typed results | |
| Core visualization | ||||||
| Trace view | ✓ | ✓ | ✓ | ✓ | ✓Task / ISR swim lanes, 10 lanes | ✓Unlimited lanes, nested function spans, contention links |
| Event log | ✓ | ✓ | ✓ | ✓ | ✓✓Virtual scroll over millions of rows, search, relation links, click to seek | |
| CPU load graph | ✓ | ✓ | ✓ | ✓ | ✓✓Stacked per-task bands, hover breakdown, busy-vs-idle headline load | |
| User events shown in trace | ✓ | ✓ | ✓ | ✓ | ✓✓Unlimited traces, 8 widget types and counting | |
| Trace snapshotsPost-mortem grab of a target buffer | ✓up to 16 KB | ✓unlimited | ✓unlimited | ✓Single-shot or post-mortem; the buffer can be dumped with any debugger | ✓✓Firmware keeps a post-mortem ring in RAM. Attach a probe after a crash or an untethered run, and one button or one CLI flag scans for the ring and saves a normal recording | |
| Trace streaming | ✕ | ✓J-Link only | ✓ | ✓J-Link RTT | ✓✓Any probe, any transport. Live streaming is the default mode, not an upgrade | |
| Profiling and analysis | ||||||
| Communication flow | ✕ | ✓ | ✓ | ✕API calls show in the event list, no flow view | ✓✓A Comms panel turns the capture into paths: every producer, object and consumer combination gets a sortable row with rate, median and p99 latency, blocking, and failed operations like full-queue sends and wait timeouts. Give-to-take links and mutex contention are still drawn right on the timeline | |
| User event signal plot | ✕ | ✓ | ✓ | ✓Data Plot, with scaling and offset per signal | ✓✓Line, bar, histogram, gauge, counter, table, toggle, register bitfield | |
| Heap usage | ✕ | ✓ | ✓ | ✓Per-heap bytes used and free, with allocation sources | ✓✓Per-heap totals, and every failed allocation with the size it wanted | |
| Stack usage | ✕ | ✓ | ✓ | ✓Per task, where the kernel reports it | ✓✓Per-task high-water marks | |
| Timing metrics | ✕ | ✓ | ✓ | ✓Min, quartiles, max and activation counts per context | ✓✓Min / max / mean / jitter, percentiles, preemption counts, priority data | |
| Advanced | ||||||
| Streaming over any interface | ✕ | ✕ | ✓ | J-Link RTT probe-side. The IP and UART recorders move the work into your firmware | ✓✓SWO / ITM, J-Link RTT, RAM buffer over SWD, direct ST-Link USB, CMSIS-DAP, UDP, serial | |
| Unlimited trace length | ✕ | ✕ | ✓ | ✓Uncapped, including under the non-commercial license | ✕5 s per capture | ✓ |
| Interval tracing | ✕ | ✕ | ✓ | ✓Performance markers: start, stop, mark | ✓✓Function spans from firmware, and highlight any region for its own statistics | |
| State machine tracing | ✕ | ✕ | ✓ | ✕ | Visible through toggle and register widgets. No state diagram yet | |
| Runnable tracingAUTOSAR runnables | ✕ | ✕ | ✓ | ✕ | ✕✕Function spans are the nearest equivalent | |
| Interval plot | ✕ | ✕ | ✓ | Box plot and histogram of durations, not durations over time | ✓✓Execution and period scatter, event-interval scatter, viewport histogram | |
| Instance graphs | ✕ | ✕ | ✓ | ✕ | ✓✓Per-instance scatter. Click the outlier to jump to it | |
| Statistics report | ✕ | ✕ | ✓ | ✓Contexts and Runtime windows, exportable | ✓✓Overview panel, plus stats tables inside every recording | |
| Data export | ✕ | ✕ | ✓ | ✓CSV of events, contexts and terminal output | ✓✓The recording is a SQLite database. There is no export step | |
| Advanced RTOS analytics | ✕ | ✕ | ✓ | Running, blocked and suspended totals. No inversion detection | ✓✓Priority inversion, contention detail, preemption, registry overflow warnings | |
| Multiple RTOS and bare metal | ✕ | ✕ | ✓ | ✓embOS, Micrium, uC/OS II and III, FreeRTOS, ThreadX, NuttX, Zephyr, plus no-OS | ✓✓Zephyr, FreeRTOS and bare metal from one recorder. Fewer kernels than SystemView today: gap noted, more adapters on the way | |
| Multicore recording | ? | ? | ? | ✓Per-core event lists and CPU load, time synchronized | ✕✕Single core today | |
| SDK for custom integrations | ✕ | ✕ | ✓ | ✓Documented C API, recorder sources on GitHub | ✓✓C recorder API, documented wire protocol, custom transport hook, Python client package | |
| ELF support | ✕ | ✕ | ✓ | ✓An ELF in the project names resources and locates the RTT block | ✓✓Symbol browser, symbol-driven trace filters, live variable watching, source navigation | |
| Project settings for multiple targets | ✕ | ✕ | ✓ | ✓Projects hold ELFs, recorder config and recordings | ✓✓One config file per board, checked in beside the firmware | |
| Linux tracing with LTTng | ✕ | ✕ | ✓ | ✕ | ✕✕MCU targets only | |
| Floating licenses | ✕ | ✕ | ✓ | ?Group and company-wide licenses; floating not stated | ✕No activation needed | ✕Machine-bound activation today. Talk to us if you need floating, site or another arrangement and we will work something out |
| Free edition terms | ✓Free, with most analysis features removed | ✕Paid only | ✕Paid only | ✓Uncapped, non-commercial use only | ✓Capped, but commercial use allowed | ✕Paid |
| Embedding and OEM termsRun it inside your own product | ? | ? | ? | ? | ✓✓Licensing can cover running the engine inside your own backend and serving the results through your own front end. Ask and we will write the terms | |
| OEM Trace DomainsMake proprietary technology first-class in ViewAlyzer | ? | ? | ? | ? | ✓✓Private or distributable trace domains with dedicated event semantics, decoders, timeline lanes, statistics, filters and purpose-built visualizations for your silicon, protocol stack or firmware platform | |
| Automation, scripting and AI access | ||||||
| Fully scriptable headless binarySame binary, no GUI | ✕ | ✕ | ? | Flags and a TCP port drive the desktop app. There is no non-GUI binary | ✓✓Record, replay, query, doctor. Stable output lines and exit codes to script against | |
| Full CLI parityAny metric the GUI shows, headless | ✕ | ✕ | ✕ | Events, contexts and terminal export to CSV, driven through the GUI | ✓✓Every number the panels show is reachable without a display: CSV metrics from replay, JSON from the tiered query API, or SQL over the same tables the panels read. Stable output lines and documented exit codes to assert on in CI | |
| Capture and hardware reach | ||||||
| Published recorder footprint | ? | ? | ? | ✓Under 2 KB ROM, about 600 B RAM, about 200 B stack per context | ✓✓About 2.7 KB flash, 0.4–0.7 KB recorder state plus any configured transport buffer, 80–100 B stack on the normal integer-event path, and no heap allocation across paired ARM M0+/M3/M4F/M33 builds | |
| On-target CPU work | ? | ? | ? | ✓Under 200 cycles, quoted as under 1% at 10,000 events/s on a 200 MHz ARM M4 | ✓✓No background analysis loop. Each selected event is timestamped, encoded and emitted; disabled categories compile out. Decoding, storage and analysis run on the host | |
| Attach without resetting the target | ✕ | ✕ | ? | ✓RTT attach and post-mortem read leave the target running | ✓✓Attach to a running system mid-flight and still get named tasks | |
| Exact event-loss accounting | ✕ | ✕ | ✕ | Overflow events say data was lost, not how much | ✓✓Know exactly how many events were lost, not just that something was | |
| Works without vendor CLIs installed | ✕ | ✕ | ✕ | ✓Self-contained, but streaming needs J-Link hardware | ✓✓Direct probe drivers. Vendor tools help, they never gate you | |
| VS Code extensionWorking inside the editor | TraceExporter saves a snapshot and opens it in the desktop app | ✕Standalone app. SEGGER’s VS Code extension is for J-Link debugging | ✓✓The trace UI itself runs inside VS Code, not a hand-off to a desktop app. The same UI runs inside BKPT Studio | |||
| Windows, macOS and Linux | ✓ | ✓ | ✓ | ✓x64 and ARM on all three | ✓✓Native builds on all three, plus a Debian package | |
Percepio columns reproduce their published comparison sheet and the SystemView column follows the SEGGER SystemView User Guide (UM08027, v4.10), both read 3 August 2026. Where a competing product may have a capability its documentation does not cover, the cell is a question mark rather than a claim of absence. SystemView is free of charge for non-commercial use with no feature limits, and $298 for a perpetual single-user commercial license. ViewAlyzer Free is the same binary as the licensed build with capture caps applied: 5 second captures with a 5 second cooldown between them, 10 timeline lanes, variable watching at 100 Hz across 4 symbols. User traces are not capped. Nothing is feature gated out of it.
Ready for a longer look?
Choose Solo, Team 3, or Team 5 in the checkout.