Summary
noDebug is a typed field of CustomLaunchRequestArguments and dapLaunchArgs accepts it (additionalProperties: true), so it reaches every adapter that spreads its config — Python, Go, Ruby and Java always have, and JavaScript does since PR #706 forwards unrecognised launch keys. Every adapter then honours it as the DAP spec says: js-debug logs "Running with noDebug, so debug domains are disabled" and never enables the Debugger domain, so no breakpoint binds and no stop ever comes.
The result is not "the program ran without a debugger" but a confusing session: a short script ends stopped with the #467 warning telling the caller to "check the file path and line" of breakpoints that were never going to bind; a server stays running with no warning while the caller waits for a stop that cannot arrive.
Found by the review of PR #706.
What would help
Not consuming the key — that would make one adapter ignore a standard DAP flag — but a cross-adapter intake warning at start_debugging when noDebug === true and the session has breakpoints (or breakOnExceptions other than none): say the debugger is off for this launch and the breakpoints will not fire. The tool-validation.ts / debuggee-tools.ts intake warnings (breakOnExceptions is a top-level start_debugging parameter) are the pattern.
Refs #467, #706.
Summary
noDebugis a typed field ofCustomLaunchRequestArgumentsanddapLaunchArgsaccepts it (additionalProperties: true), so it reaches every adapter that spreads its config — Python, Go, Ruby and Java always have, and JavaScript does since PR #706 forwards unrecognised launch keys. Every adapter then honours it as the DAP spec says: js-debug logs "Running with noDebug, so debug domains are disabled" and never enables the Debugger domain, so no breakpoint binds and no stop ever comes.The result is not "the program ran without a debugger" but a confusing session: a short script ends
stoppedwith the #467 warning telling the caller to "check the file path and line" of breakpoints that were never going to bind; a server staysrunningwith no warning while the caller waits for a stop that cannot arrive.Found by the review of PR #706.
What would help
Not consuming the key — that would make one adapter ignore a standard DAP flag — but a cross-adapter intake warning at
start_debuggingwhennoDebug === trueand the session has breakpoints (orbreakOnExceptionsother thannone): say the debugger is off for this launch and the breakpoints will not fire. Thetool-validation.ts/debuggee-tools.tsintake warnings (breakOnExceptions is a top-level start_debugging parameter) are the pattern.Refs #467, #706.