This extension is mainly a bridge. It connects VS Code to the free Mantissa desktop app, which is where the full analysis lives. (It does ship two small standalone tools — a fixed-point decoder and a waveform snapshot plot — but the app is the point.) Download Mantissa here.
A tiny extension that exposes the active VS Code debug session to Mantissa's Debugger mode, so Mantissa can read your locals, evaluate expressions, and chart fixed-point variable pairs against their float reference while you're stopped at a breakpoint.
What it does
When a debug session starts, the extension:
- Opens a localhost-only TCP server on a random free port.
- Writes a small discovery file in your OS temp folder (e.g.
C:\Users\<you>\AppData\Local\Temp\mantissa-vscode-49823.json) containing the port, your VS Code PID, and the session name. - Speaks a tiny DAP-shaped
JSON-RPC dialect — every request is forwarded to the active debug
session via VS Code's
customRequestAPI.
When the session ends, the server closes and the file is deleted.
Mantissa scans for those files, finds the port, connects, and you see your session in the picker.
Why?
Mantissa used to ship a gdb plugin that did the same job at the gdb
level. It worked, but every install topology (WSL gdb, MinGW gdb,
native Linux gdb, lldb on macOS) needed its own probe path, and getting
the plugin loaded meant editing ~/.gdbinit and restarting the gdb
session.
This extension lives one layer up — inside VS Code — so the install is identical on every OS, and it works for every DAP debugger (cppdbg / lldb / cppvsdbg / debugpy / CodeLLDB / …) instead of just gdb.
Install
From the marketplace (preferred): in VS Code's Extensions panel (Ctrl+Shift+X) search "Mantissa Bridge" and click Install. Or from a terminal:
code --install-extension mantissa.mantissa-bridge
From a .vsix file (e.g. an offline install, or to pin to a
specific version):
code --install-extension <path-to-mantissa-bridge-X.Y.Z.vsix>
That's it. There's nothing to configure. Make sure the Mantissa app is installed, start any debug session, and Mantissa's "Search debugger sessions" will list it.
Decode fixed-point values
Mantissa: Decode fixed-point value — right-click a variable in the debug sidebar's Variables (or Watch) panel, right-click a selection in the editor, or run it from the command palette.
While stopped at a breakpoint the variable is read through the
active debug session; with no debugger at all you can type a raw
integer (hex 0x… works). You get the value decoded at the
common Q-formats for its word width, with the LSB and representable
range per row; picking a row copies the decoded value. Word width,
signedness, and a custom Q are one keystroke away in the same picker.
Conventions match the app's converter: a signed N-bit word with Q
fractional bits, so E = (N − 1) − Q and the value is
raw / 2^Q. For watching those values change over time, charted
against their float reference while you step — that's the
Mantissa app.
Plot an array as a waveform
Mantissa: Plot array as waveform draws a one-shot snapshot of an
array/buffer at the current breakpoint. Easiest path: right-click
the variable in the debug sidebar's Variables (or Watch) panel and
pick it from the menu. Also available from the command palette or by
right-clicking a selection in the editor (for pointers, use a slice
expression — gdb: *ptr@256). If the data is integer you pick a
Q-format scale, then a side panel shows the waveform with
min / max / mean / RMS. Buffers are capped at 4096 points;
anything denser than the pixel grid draws as a min/max envelope.
The plot is deliberately static. Watching it evolve as you step, overlaid on its float reference, with spectrograms and WAV export — that's the Mantissa app.
Settings
| Key | Default | What it does |
|---|---|---|
mantissa.bridge.enabled |
true |
Turn the bridge off without uninstalling |
mantissa.bridge.host |
127.0.0.1 |
Listen address (loopback by default) |
Security
The TCP server binds to loopback only. There's no authentication —
any process on the same machine can read the discovery file and
connect, just as any process on your machine can already attach gdb
to your running debugger. If you don't want that, set
mantissa.bridge.enabled to false.
The extension never reaches out to the network. The full source is in
the Mantissa repo at mantissa/integrations/vscode-bridge/.