Prerequisites
Before you begin, make sure you have:- The
@hyperprobe/node-sdk(or Java SDK) installed and running inside your application. The agent must be connected and its status must appear as online in the HyperProbe panel. - The HyperProbe VS Code extension installed and connected to your backend. You should see at least one active source in the Source dropdown.
If no sources appear in the dropdown, your agent has not yet checked in with the broker. Give it up to 60 seconds after startup, then verify your
brokerUrl, serviceId, and environment values in your SDK configuration.Place the probe
Choose a meaningful line
Pick a line that runs on real user traffic and sits at a point where the data you care about is in scope. Good candidates are lines immediately after a request is parsed, inside a function that handles user input, or at the start of a database operation.Avoid lines inside tight loops or extremely high-frequency hot paths unless you plan to use a condition to narrow captures.
Open the file in VS Code
Navigate to the file in the VS Code editor. Having the file open is not strictly required, but it makes it easier to note the exact line number you want to instrument.
Open the HyperProbe panel
Click the HyperProbe icon in the VS Code activity bar to open the panel. Select Insert a Snapshot from the action list.
Select your source
Click the Source dropdown and choose the entry that matches your target service, environment, and commit. The label format is:The commit SHA ensures your probe targets exactly the build currently running. If multiple instances of the same service are online, they share the same probe definition.
Enter the file path and line number
In the Filename & Line fields, enter:
- The relative path to the source file as it appears in your repository (for example,
src/handlers/user.ts). - The line number where you want the snapshot to fire.
Add watch expressions
Enter one or more expressions to evaluate when the probe fires. Watch expressions let you capture values that require computation, not just plain local variables.You can add as many expressions as you need. Local variables are always captured automatically — watch expressions are for anything that requires property access, filtering, or method calls.
Add a condition (optional)
Enter a boolean expression to filter when the probe fires. The probe only captures when the condition evaluates to
true.Set the hit limit
Choose how many times the probe should capture before it auto-expires.
- 1 — One-shot capture. Use this when you want a single definitive snapshot.
- 3–5 — Good for debugging intermittent issues where the bug doesn’t reproduce every time.
- 10–20 — Use with a condition so each capture is meaningful and the volume stays manageable.
Trigger and inspect
Trigger the code path
Perform whatever action in your application causes the instrumented line to execute. This might be making an API request, submitting a form, or triggering a background job.
Watch for captures in the panel
In the HyperProbe panel, the probe entry updates as captures arrive. Click the probe to open the Snapshot Inspector.
Inspect the captured state
The inspector shows three collapsible sections:
- Watch Expressions — The evaluated result of each expression you specified, displayed as an expandable tree. Nested objects are fully navigable.
- Variables — All local variables captured at the instrumented line, scoped to the selected call frame. Use the search box to filter by name.
- Call Stack — Every stack frame at the moment of capture. Click any frame to switch the Variables panel to that frame’s local scope.
Navigate multiple hits
If your hit limit was greater than 1, use the arrow controls at the top of the inspector to page through captures. The counter shows
Hit N / Total, with hit 1 being the oldest capture.You can also type a number directly into the counter to jump to a specific hit.What to do next
- Learn how to protect sensitive variable values from appearing in captures: Redacting sensitive data
- Understand the safety mechanisms that prevent probes from impacting production: Safety guardrails
- Set up source maps if you are using TypeScript or a bundler: Source maps
