You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While validating #214 end-to-end we found that an uncaught exception in a Python debuggee terminates the session rather than pausing at the crash site: debugpy only breaks on exceptions when the client sends setExceptionBreakpoints with filters ('uncaught'/'raised'), and mcp-debugger never sends it for top-level sessions (only the js-debug child-session bootstrap does, with empty filters). There is also no MCP tool through which an agent could enable it.
Why it matters
Combined with #214's lastStop (now exposing reason: 'exception' when a stop occurs), break-on-uncaught is the missing half of crash diagnosis: pausing at the crash site with the traceback frame live is exactly the agent workflow β inspect locals at the point of failure instead of re-running with print statements.
Proposal
Either a dedicated tool (set_exception_breakpoints with a filters array validated against the adapter's exceptionBreakpointFilters capability), or an option on start_debugging (e.g. breakOnUncaught: true).
The python adapter already validates filters in sendDapRequest('setExceptionBreakpoints', ...); the plumbing exists, only the tool surface is missing.
Repro
Set a breakpoint, start_debugging, continue_execution past a ZeroDivisionError: the session goes straight to state: 'stopped' β indistinguishable from a clean exit (no exit code is surfaced either).
π Feature Request
While validating #214 end-to-end we found that an uncaught exception in a Python debuggee terminates the session rather than pausing at the crash site: debugpy only breaks on exceptions when the client sends
setExceptionBreakpointswith filters ('uncaught'/'raised'), and mcp-debugger never sends it for top-level sessions (only the js-debug child-session bootstrap does, with empty filters). There is also no MCP tool through which an agent could enable it.Why it matters
Combined with #214's
lastStop(now exposingreason: 'exception'when a stop occurs), break-on-uncaught is the missing half of crash diagnosis: pausing at the crash site with the traceback frame live is exactly the agent workflow β inspect locals at the point of failure instead of re-running with print statements.Proposal
set_exception_breakpointswith afiltersarray validated against the adapter'sexceptionBreakpointFilterscapability), or an option onstart_debugging(e.g.breakOnUncaught: true).uncaughton for Python launch sessions: for an agent-driven debugger, pausing at a crash is almost always more useful than losing the session β and after Stop reason (breakpoint vs. exception) is discarded after the first stop β no way to detect a crashΒ #214 the pause is clearly labeledreason: 'exception'.sendDapRequest('setExceptionBreakpoints', ...); the plumbing exists, only the tool surface is missing.Repro
Set a breakpoint,
start_debugging,continue_executionpast aZeroDivisionError: the session goes straight tostate: 'stopped'β indistinguishable from a clean exit (no exit code is surfaced either).