The workspace
- Layout
- The sidebar
- The top bar and the capsule
- The dock: tabs, splits and tiles
- The log
- The shared time model
- Themes, scale and shortcuts
- Where things are stored
Layout
The sidebar holds every setting. The top bar holds one card per view and the capture capsule. The dock is where views live. The log sidebar on the right opens with the panel icon at the far right of the top bar. Both sidebars can be dragged wider or narrower at their inner edge.
The sidebar
Sections open and close independently. A field's value is saved as soon as you leave it; a dropdown applies on pick. Fields that do not apply to the current choice are hidden (J-Link fields under ST-Link, SWO fields under RAM Buffer, and so on).
Connection
Probe type, serial, target device, interface and speed, and the network / serial parameters. Reset on Connect decides between recording from boot and attaching to the running firmware. Load Config / Save Config read and write .vacf files. Described field by field in Getting started, step 3.
Software Trace
The firmware-side recorder: the Trace Source (RAM Buffer, RTT, SWO) with its addresses, COBS framing for UDP / serial, and Take Snapshot for reading the RAM ring out of an untethered board. Live Trace Mode and Trace Tuning only are kept for settings compatibility and have no effect in this version: a capture always streams live. Trace Clock (MHz) and SWO Freq (kHz) appear only for SWO. RAM Buffer and RTT carry the recorder clock in the trace stream.
Hardware Trace
The ARM Data Watchpoint and Trace unit and the ITM, which need no firmware support at all. Hidden for non-ARM targets, with a note saying why. One switch chooses how much of it you want (the whole section, with the reasons and the pin budget, is the Hardware trace page):
| FIELD | MEANING | ||||
|---|---|---|---|---|---|
| Profiling Source | Off; Sampling: a rough profile with no setup (program-counter samples only, at the lightest interval; on-chip over the SWO pin when the core and the trace source allow it, polled over the debug port otherwise; the Profile line says which and at what rate); On-chip trace: every source the core has, with the controls below. | ||||
| CPU Clock (MHz) | Appears only when RAM Buffer or RTT PC sampling polls the debug port. It converts the selected cycle interval into a polling rate; normal recorder timestamps do not use it. | ||||
| DWT Data Path | Auto, Debug-port polling (forces the polled profile; the SWO-borne sources are off) or SWO pin. | ||||
| PC Sample Interval | On-chip trace only. The hardware grid from 64 to 16384 cycles; the Interval Rate line shows the sample rate at the configured CPU clock and the share of the SWO pin it takes, and names the entries the pin cannot carry at the current baud. | ||||
| DWT Exception Trace | Interrupt enter / exit / return from the hardware, independent of the firmware's ISR hooks. Feeds the Exception Trace view. | ||||
| Counter: ... | The six DWT event counters (each wraps every 256 counted cycles). Feed the Event Counters view; the Sleep counter gives a measured CPU load. The Cycle event shares its timer with PC sampling and is refused while sampling is on. | ||||
| DWT Watch Addresses | One data watch per DWT comparator (four on most cores), `name@0xADDR[:size][:data-rw | data-r | data-w | pc | address][:pc]; a bare 0xADDR:4` is a write-only value watch. Feed the Data Trace view. |
| ITM Ports / Privilege / Timestamps | The stimulus-port mask (bit n = port n; port 0 carries printf and the recorder's port is always added), the privilege mask, and the local timestamp prescaler. Port text lands in the ITM Console. | ||||
| Trace Port Protocol | NRZ. Manchester is listed so you can see it is not supported, and says so when picked. | ||||
| SWO Budget / SWO Load | An estimate of the pin load from everything enabled (assumed event rates are printed with it), and the measured load: live while recording, the last capture's afterwards. |
Every control the core lacks stays visible but disabled, with the reason next to it (no cycle counter, no trace packets, a Cortex-M0+, a non-SWO trace source). The whole section, control by control, with the reasons and the pin budget, is the Hardware trace page.
Trace Domains
Installed domain descriptors, each with an on / off toggle (an enabled domain applies to every recording), a gear that opens it in the Domain Editor, and a delete button with a confirmation. Domains that bundle a live instrument show their parameters here. Load Domain File installs a .vadomain; Load Domain Package installs a folder.
General
| FIELD | MEANING |
|---|---|
| Sticky Cursor | A click in the Timeline, a chart, or the Timers and Comms timelines pins the shared cursor; click the same spot again to release it. |
| Live History (sec) | No effect in this version. |
| Toolbar Labels | No effect in this version. |
| Verbose logs | No effect in this version. |
| GPU Rendering | Linux only; no effect in this version. |
| Full Sync | No effect in this version: the zoom window is always shared between views. |
| Cursor Sync | No effect in this version: the cursors are always shared between views. |
| Load Full Trace After Stream | No effect in this version. |
The settings marked "no effect" are kept so a settings file saved by an earlier version loads unchanged.
ELF / Symbols
ELF File (used by Symbols, Memory, Profiler, Timers, Overview), MAP File, and Source Root, the checkout the Profiler's Source view resolves file names against when the recorded paths are not on this machine.
Tools
Paths to external tools: the ARM toolchain and GDB, the J-Link install (when the SEGGER software is somewhere the app does not look), and the vacore_capture probe tool. Nothing here is needed for a normal native capture.
License & Updates and Support
The license status line says what licenses this machine and, when nothing does, what that costs: without a license ViewAlyzer runs in free mode (captures capped at 5 s with a 5 s cooldown between them, the first 10 task/ISR lanes, symbol polling up to 4 symbols at 100 Hz). Enter a key and press Activate License to bind this machine to it (needs the internet once; the license then works offline and refreshes itself when connected), or Install License File for a partner-issued viewalyzer-oem.license, which never contacts our server. Licensed To, Tier and Updates Until appear once a license is in force; Deactivate License releases this machine's seat so the key can move to another. Check for Updates asks what the newest build is (reporting only; a partner install is answered by the partner). The Support section links to email support, the documentation site and the website, or to whatever a partner's license file names instead.
The top bar and the capsule
One card per view, in this order: Settings (shows / hides the sidebar), Theme (cycles Dark, Graphite, Light), then Table, Trace, CPU, Timeline, Comms, Timers, Profiler, Overview, Symbols, Call Graph, Memory, Registers, Trace Tune, Fingerprint, Analyzer, and the rest. Clicking a card opens its panel, or brings it to the front if it is already open somewhere; hovering a card names it in the capsule.
The capsule, idle:
| STATE | MEANING |
|---|---|
| IDLE | Nothing running. Click the centre to start a capture. |
| 01:30 (in place of IDLE) | A timed capture is armed; - / + change it in 30-second steps, down to IDLE for "until stopped". |
| LINK (amber) | Attaching to the target. |
| REC 00:42 (red) | Recording; the elapsed time counts up. The whole capsule is the stop button. |
| SAVING | Finalising the file after stop. |
| LOADING | Opening a recording or taking a snapshot. |
OPEN opens a recording from disk. SAVE saves the current one to a place of your choice and is highlighted while the recording in memory is unsaved. Both words hide while recording.
The dock: tabs, splits and tiles
Views live in tiles. A tile has a header with the view's title (and a status hint for some views), a grip, and a close button; tiles with several views show them as tabs.
- Drag a tab by its header onto another tile's header to tab it there.
- Drag it onto another tile's left, right, top or bottom band to split that tile and dock the view on that side.
- Drag the dividers between tiles to resize.
- Close with the tile's or the tab's close button, or click its top-bar card.
The arrangement, the open views, the theme and the sidebars are remembered between runs. Trace chart sizes, overlays, and hidden channels are also reused when the next recording has the same trace channels. The first-run layout is CPU and the Event Table above the Timeline.
Some views tile again inside themselves: the Trace panel's charts, the Profiler's source files, and the Timers and Comms Split views, each with the same drag and divider gestures.
The log
The log sidebar (panel icon, far right of the top bar) has two tabs:
- System: what the app did, one line per step (
[h:mm:ss pm] [LEVEL] message): probe attach, ring discovery, decode statistics, losses, warnings and errors. The first place to look when a capture does not behave. - User: string messages the firmware sent (
[ 12.345678] message), on the recording's clock.
Buttons clear the log, copy it, save it to a file, and toggle auto-scroll. Long lines wrap; the panel is drag-resizable.
The shared time model
Every time-based view reads the same four things, so what you do in one is visible in all of them:
| THING | HOW IT IS SET | WHERE IT SHOWS |
|---|---|---|
| Zoom window | Ctrl+wheel (Cmd+wheel on macOS) zooms around the pointer; Ctrl+drag shades a range and zooms to it on release; Shift+wheel or a horizontal wheel pans; drag pans; a fit chip returns to the full recording | Timeline ruler, chart time axis, Timers ruler, Comms window caption; the Comms Split view scopes its table to it |
| Hover cursor | Moving the pointer over any of those views | A hairline in every view with a time axis, with the time in each ruler |
| Pinned cursor | A click, when Sticky Cursor is on; a double-click in the Timeline, a chart, or the Event Table and jumps from CPU, Analyzer, Timers, and Comms pin it too | An amber hairline everywhere; the Event Table highlights and centres the nearest event; the next click anywhere releases a jump-pinned cursor |
| Selected region | Hold Shift and move the pointer over the Timeline or a chart: the region sweeps from where Shift went down and settles when you release it; Escape clears it | Dimmed outside the region in the Timeline and charts; the CPU and Analyzer views can scope to it (the Selection pill) |
| Measurement markers | Ctrl+right-click (Cmd+right-click on macOS) in the Timeline or a chart; drag an A/B/C/... handle to refine it | A shared marker strip in the Timeline and every time-based chart, with the delta between each adjacent pair |
Themes, scale and shortcuts
| KEY | ACTION |
|---|---|
Ctrl / Cmd + +, Ctrl / Cmd + -, Ctrl / Cmd + 0 | Scale the whole interface up, down, back to 100 % |
| Escape | Clear the selected region |
| Ctrl / Cmd + wheel | Zoom the time axis around the pointer |
| Ctrl / Cmd + drag | Shade a time range, then zoom every synchronized time view to it |
| Ctrl / Cmd + right-click | Add a measurement marker |
| Shift + wheel, or a horizontal wheel | Pan the time axis |
| Shift + move | Sweep the selected region |
| Double-click in Timeline / Trace | Pin that time and highlight the nearest Event Table row |
The Theme card cycles Dark, Graphite and Light.
Where things are stored
| OS | PER-USER FOLDER |
|---|---|
| Windows | %APPDATA%\ViewAlyzer-GPUI\ |
| macOS | ~/Library/Application Support/ViewAlyzer-GPUI/ |
| Linux | $XDG_CONFIG_HOME/ViewAlyzer-GPUI/ (default ~/.config/ViewAlyzer-GPUI/) |
Inside it: sidebar-settings.xml (every sidebar field and toggle), state.json (window, theme, dock layout), recordings/ (complete .vadb recordings and raw .va byte logs, shared with the command line), the Trace Tune graph, and the installed domains. See Open, save and share recordings for which format to use. Deleting state.json restores the first-run layout; deleting the whole folder resets the app.