Skip to content
| Marketplace
Sign in
Visual Studio>Tools>Waveform Watch
Waveform Watch

Waveform Watch

Kalash Khator

|
5 installs
| (0) | Free
Plots native C++ signal buffers at a breakpoint: time, power, phase, spectrum, constellation and CCDF, refreshed on every break.
Download

Waveform Watch

Plot native C++ signal buffers while the Visual Studio debugger is stopped. Point it at a std::vector, an array or a raw pointer. The plots are recalculated from the buffer's current memory at every break.

You don't change any code, add probes or rebuild your project.

time__1.png

Quick start

Say your program has a buffer of samples:

std::vector<std::complex<float>> samples(4096);
// ... fill samples ...
__debugbreak();   // or set a normal breakpoint on the next line
  1. Debug the program (F5) and let it stop after the buffer is filled.
  2. Right-click samples in the code editor and choose Plot in Waveform Watch. You can also open Tools > Waveform Watch and type samples in Buffer.
  3. Under the watch list, enter the Sample rate (Hz), for example 30.72M, and press Enter.
  4. Continue or step. The plots update at every break and keep your zoom.
  5. Click Hold as reference to keep a snapshot. It is drawn in grey under later breaks, so you can compare before and after.

Click Help in the window, or choose Tools > Waveform Watch Help, for the full guide.

What you can plot

Expression Use for
samples std::vector, std::array or a C array
ptr, count A raw pointer, for example m_I_buffer, m_blockSize
iPtr, n ; qPtr, n Separate real I and Q buffers
spec A struct holding the data with its start and spacing. Waveform Watch finds the members by name.
  • Real: float, double, 8/16/32-bit integers.
  • Complex: std::complex<float>, std::complex<double>, Ipp32fc, Ipp64fc, Ipp16sc, Ipp32sc.
  • I/Q pairs: a real array whose values alternate I and Q.

Number fields take plain numbers, suffixes (30.72M, 1u, 2.4 GHz) or debugger expressions such as m_sampleRate.

Views

Tab What it shows
Time - Volt I, Q and |x| in volts against time. Long buffers keep their peaks.
Freq - Amp Amplitude spectrum in dBV or V. Averaged (Welch), single unscaled FFT as the LabVIEW probe plots it, or pyprobe-compatible.
Freq - Phase Phase against frequency
Statistics RMS, peak, PAPR, mean power, DC offset, I/Q ranges and the sample values
Power Instantaneous power in dB or dBm (50 ohm), with the mean as a dashed line
Constellation I against Q on equal axes
CCDF Probability that power exceeds the average by x dB, with a Gaussian reference
Trend RMS, peak, mean power or PAPR at each debugger stop
History Captures from earlier stops, which you can show, overlay, export and import

spectrum__2.png

constellation__2.png

Analysis features

  • Plot controls: type axis ranges, lock an axis, choose line or points, and place two markers that snap to the trace and read out the difference between them. Settings are kept per watch and per tab.
  • Compare watches: overlay up to three watches on the selected one, or plot their difference.
  • Trend and history: follow a statistic across breaks and keep captures to compare a stop with an earlier one, even when the program isn't at a break.
  • Capture export and import: save a capture to a .wwcap file to share. It holds sample values only, never code.
  • Recipes: save a whole setup (watches, units, axes, markers) to a JSON file and load it later or on another machine.

Zoom with the mouse wheel, pan by dragging, and zoom into a region with the right mouse button. Press A in a plot to reset it.

Good to know

  • The program must be debugged on the same machine. Remote debugging isn't supported.
  • Each plot shows the buffer exactly as it was at that break. If code processes a signal in blocks, you see only the current block.
  • Buffers are read up to 16,777,216 samples and shown as 32-bit float volts (peak).
  • History is kept in memory only: up to 20 captures per watch and about 256 MB in total.
  • std::vector is read straight from memory, so no code runs in your program.
  • Child rows in Watch, Locals and Autos, such as [0], can't be plotted with right-click. Type the full expression instead.
  • If the menu items are missing, close Visual Studio, run devenv /updateconfiguration from a Developer PowerShell and start it again.

Waveform Watch Lite

Waveform Watch Lite is a smaller edition with the time, spectrum, phase, statistics, power, constellation and CCDF views, without the analysis features above. Both can be installed together.

Requirements

  • Windows x64 with Visual Studio 2022 (17.x, any edition) and the C++ workload.

Release notes

1.2.0

  • Added in-product help (Help button and Tools > Waveform Watch Help) and a hint in the empty window.
  • Capture export and import in the History tab, and faster marker snapping on very large spectra.

1.1.0

  • Plot controls, overlays and difference, trend and history, and recipes.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft