12. Settings and commands reference

Everything configurable, in one place. The chapters explain what these do; this page is for looking one up.

The debug type

Type iddelphi-win64 — used for 32-bit targets too; it was never renamed when Win32 support shipped, so existing configurations keep working
LabelDelphi (Win32/Win64)
Languagesobjectpascal, pascal; breakpoints also work in files typed as delphi
Extensiondelphi-win64-debug, publisher local

Launch configuration

PropertyTypeDefaultNotes
programstringrequiredPath to the .exe to debug
mapFilestringsame path as program, .mapDelphi MAP file
rsmFilestringsame path, .rsmNeeded for local variable inspection
sourceRootstringemptyRoot directory for source lookup
sourceSearchPathsstring[]emptyExtra source directories, each searched two levels deep
argsstring[]emptyCommand-line arguments for the debuggee
stopAtEntrybooleanfalseBreak at the process entry point before any user code runs
rawStackScanbooleanfalseOpt-in brute-force stack sweep fallback — chapter 6
modulesobject[]empty{ name (required), map, rsm, dcp } — pre-binds debug info for runtime-loaded DLLs and BPLs
delphiProjectFilestringemptyThe .dpr/.dpk/.dproj this configuration debugs, written automatically by the IDE plugin. Enables the two project-scoped tiers in exception rules.
useGlobalExceptionRulesbooleantrueAlso load the shared machine-wide rules file
globalExceptionRulesPathstring%USERPROFILE%\.DelphiWinDebugger\exceptionRules.jsonOverride the shared rules file location
progressLocation"statusBar" | "notification""statusBar"Where long operations report progress
diagnosticLogbooleanfalseWrites %TEMP%\dap_adapter.log. Very verbose. Also enabled by the DAP_LOG=1 environment variable.
diagnosticsLocation"outputChannel" | "debugConsole""outputChannel"Where the debugger’s own messages go

Attach configuration

Adds the following. program, mapFile, rsmFile, sourceRoot, sourceSearchPaths, modules, delphiProjectFile, useGlobalExceptionRules, globalExceptionRulesPath, rawStackScan, progressLocation, diagnosticLog and diagnosticsLocation all work as they do for launch.

stopAtEntry and args are the two that do not — and they are absent from the attach schema rather than silently ignored, because both only mean something for a process the debugger starts itself.

PropertyTypeDefaultNotes
processIdnumber or stringPID to attach to. Use "${command:delphi-win64.pickProcess}" to pick interactively.
processNamestringExecutable name, e.g. "MyApp.exe"
killOnDetachbooleanfalseDetaching leaves the process running by default

Exception rules

Not a launch.json property — rules live in up to three JSON files (per-project local, per-project shared, machine-wide), never in the launch configuration itself. See where rules live for the files and their precedence. Within any of them, the shape below is the same: an ordered array, first match wins, each rule a flat object of optional criteria plus a required action. Criteria present in a rule are AND-ed; omitted criteria are wildcards. Chapter 4 explains the behaviour.

KeyTypeMatches
classstring | string[]Runtime (leaf) class, exact, case-insensitive
classIsstring | string[]Runtime class or any ancestor
codestring | integer | arrayWin32 exception code, hex or decimal. The only criterion that matches native exceptions.
messagestringCase-insensitive substring of the message
messageRegexstringCase-insensitive regular expression against the message
unitstringRaise-site unit by basename; "*unknown*" for no resolvable location
lineintegerSingle raise-site line; seeds both range bounds
lineFrom / lineTointegerInclusive raise-site line range
actionstringRequired. ignore, log, logStack or break

Exception filtersdelphi, av, all, unhandled — are a different thing with no launch.json field of their own: set them in the BREAKPOINTS view, or by an agent over MCP through delphiExceptionClasses on launch_debuggee, attach_from_config or set_exception_filters. The delphi filter narrows to specific classes with that same argument (or the GUI pencil’s condition field) — a comma- or semicolon-separated allowlist. Defaults are delphi, av and unhandled.

Commands

Twelve commands, all in the Delphi Debugger category — so in the Command Palette (Ctrl+Shift+P) they read Delphi Debugger: Edit Exception Rules… and so on. Four of them are deliberately not in the palette, because they only make sense on the thing you clicked; those are marked below.

CommandWhere it livesIn palette
Edit Exception Rules…Title bar of the Breakpoints and Call Stack viewsyes
Create a Rule for This Exception…The floating debug toolbar — only while stopped on an exceptionyes, same condition
Toggle Raw Stack ScanCall Stack view title baryes
Refresh ModulesDelphi Modules view title baryes
Filter Modules…Delphi Modules view title baryes
Clear Module FilterDelphi Modules view title bar, once a filter is setyes
View Memory (Delphi)Hover icon on a row in the Variables or Watch view — not in the right-click menuyes
Always Evaluate This Property (Delphi)Right-click a row in Variables or Watchno
Never Auto-Evaluate This Property (Delphi)Right-click a row in Variables or Watchno
Forget Evaluation Decision (Delphi)Right-click a row in Variables or Watch — undoes a previous allow or denyno
Copy PathHover icon on a module row in the Delphi Modules viewno
Pick a Process to Attach ToOnly as ${command:delphi-win64.pickProcess} in an attach configurationno
Two of these are inline icons, not menu entries: they appear on the row itself when the mouse is over it, at the right-hand end. Looking for View Memory (Delphi) or Copy Path in a right-click menu will not find them.

Extension settings

SettingTypeDefaultWhat it does
delphi-win64.stockMemoryViewbooleanfalse Also show VS Code’s built-in hex pane alongside the extension’s own memory view
delphi-win64.checkForUpdatesbooleantrue Daily check of GitHub releases, with a download-link notification. Fails silently when offline.

Keyboard

Standard VS Code debug bindings; nothing is remapped.

F5Start / Continue
F10Step over
F11Step into
Shift+F11Step out
Ctrl+Shift+DOpen the Run and Debug view