New Persistent assistants now work in governed, cross-host teams. See what changed

Debugger

Step through Node.js, Python, Go, and .NET code with breakpoints, call stack, and variables.

On this page

The editor includes a minimum-viable debugger built on the Debug Adapter Protocol (DAP). It dispatches Node.js, Python, Go, and .NET configurations to their runtime-specific adapters through the same DAP layer.

Runtimes

type in launch.jsonRuntimeAdapterHow Glueprint finds it
node, pwa-nodeNode.jsVS Code’s js-debug-adapterPATH, or adapterPath pointing at dapDebugServer.js
python, debugpyPythondebugpy under your interpreterthe interpreter from your config, else python3 / python on PATH
go, delveGodlv dapPATH, or adapterPath pointing at the dlv binary
coreclr, dotnet.NETnetcoredbgPATH, or adapterPath pointing at the netcoredbg binary

Prerequisites

Install VS Code’s js-debug-adapter so Glueprint can launch it:

npm install -g @vscode/js-debug

If you want to point at a non-PATH install instead, set adapterPath in your launch entry to the absolute path of dapDebugServer.js.

For .NET on Windows, install netcoredbg with Scoop:

scoop install netcoredbg

On other supported platforms, download the build for your platform from the netcoredbg releases, unzip it, and set adapterPath to the absolute path of the binary inside. Keep the extracted folder intact — netcoredbg needs the managed files next to the binary.

On macOS, clear the quarantine attribute on the extracted folder first:

xattr -dr com.apple.quarantine <folder>

netcoredbg publishes binaries for Windows x64, Linux x64 and arm64, and macOS Apple Silicon; there is no current published build for Intel macOS.

For .NET launch requests that start a .dll, dotnet must also be on PATH. Attach requests do not require the dotnet host.

launch.json

Glueprint reads debug configurations from .glueprint/launch.json at the workspace root (not .vscode/launch.json). The schema is the same shape VS Code uses — name, type, request, program, cwd, env, and an optional preLaunchTask that names a task from your task runner.

Your launch.json remains the source of truth for program, cwd, and env. Glueprint resolves supported deterministic variables such as ${workspaceFolder} before launch. For .NET only, a missing program may be replaced by the single matching target-framework output described below. If preLaunchTask is set, the runner runs that task first and only starts the debugger if it exits cleanly.

Generating .NET configurations

When .glueprint/launch.json has no configurations, the Debug panel offers a Generate .NET configurations button. Glueprint writes one entry per runnable, non-test project. When the project declares one literal TargetFramework, program points at bin/Debug/<tfm>/<assembly>.dll. Otherwise it points at bin/Debug/<assembly>.dll. Each entry also gets type: "coreclr", justMyCode: true, stopAtEntry: false, and a preLaunchTask naming the project’s own build task — or the solution’s build task when a solution covers the project — so starting the configuration builds first.

At launch, if program does not exist, Glueprint searches the immediate target framework directories for the same assembly. Exactly one match is used. If multiple built target frameworks contain that assembly, the path is ambiguous and the launch fails until you set program to the one you want. With no match, build the project first; a hand-written configuration with no preLaunchTask does not build it for you.

The Debug panel

The debugger UI docks on the right side of the editor and shows:

  • A launch picker at the top — the dropdown lists every configuration in your launch.json. Click one to start a session.
  • Run state — starting, running, stopped (paused), terminated.
  • Call stack — the current threads and their stack frames. Click a frame to jump the editor to its source location.
  • Variables — scope-grouped variables (locals, closure, globals). Expand objects to drill in.
  • Breakpoints — the list of breakpoints currently set in the workspace.
  • Output — adapter and program output.

Keyboard shortcuts

ShortcutAction
F5Start session (first config) or continue paused thread
Shift+F5Disconnect the active session
F9Toggle breakpoint at the cursor
F10Step over
F11Step in
Shift+F11Step out

Shortcuts only fire when an editor surface is focused.

Breakpoints

Click the gutter to the left of a line number to toggle a breakpoint. A red dot marks an active breakpoint. F9 does the same thing for the line at the cursor. Breakpoints persist across debug sessions for the workspace.

Multi-root workspaces

In a multi-root setup (e.g. a monorepo with server/, portal/, etc. as siblings), Glueprint resolves the workspace for a debug session by looking at the active editor tab’s file and walking up to the file-browser root that owns it. Open the file in the workspace you want to debug before pressing F5.

Limits today

  • Modern .NET only. Glueprint debugs .NET projects using netcoredbg. SDK-style projects only - .NET Framework, Mono, and Unity projects are not supported.
  • Supported product surface. Glueprint supports modern SDK-style C# and F# projects on .NET 6+ / CoreCLR. It does not support .NET Framework or non-SDK-style projects, VB project types, C++/CLI (.vcxproj), Razor or Blazor language intelligence, XAML tooling, or Windows ARM64 builds.
  • Single-config quick-start. F5 from cold launches the first configuration in launch.json. To pick a specific config, use the dropdown in the Debug panel header.
  • No remote debugging. The adapter runs on the host where Glueprint is running.