MCP debug_exception_breakpoints_set

Description

Sets which BrightScript exception categories should stop the app (SET_EXCEPTION_BREAKPOINTS, DAP-only, requires BrightScript debug protocol >= 3.3.0 -- check debug_session_status's capabilities.exceptionBreakpoints first, or this call fails with a clear 400 instead of attempting anything on the device).

This REPLACES the entire filter set on every call -- it is not additive like debug_breakpoint_set. Pass an empty array to clear all exception breakpoints.

An uncaught exception ALWAYS stops the app once a debugger is attached, regardless of this tool -- that needs no filter at all (device-verified live). The one thing this tool actually controls is "caught": an exception the app's own try/catch would otherwise handle silently. Setting {filter: "caught"} makes the debugger stop there too, before the catch block runs -- confirmed against the BrightScript firmware's own test suite (TC-EBP-3). "uncaught" is accepted but adds nothing beyond the always-on default.

Each filter can carry an optional per-filter guard expression (condition) -- e.g. only stop on a caught exception when a specific expression is true. There is no async confirmation update for this command (unlike line breakpoints' BREAKPOINT_VERIFIED) -- a successful response means the device acknowledged every filter with err=OK, not a separate later confirmation.

Parameters:

  • filters (array, required): [] clears all exception breakpoints. Each entry: { filter: "caught" | "uncaught" (required), condition?: string }.
  • sessionId (string, optional): defaults to the active debug session.

See also

Parameters

additionalProperties: false

NameTypeRequiredValues
filtersarray<object>Yes
sessionIdstringNo

filters

Exception filters to break on. [] clears all.

filters fields

NameTypeRequiredValuesDescription
filters[]objectNoadditionalProperties: falseNot documented in the source.
filters[].filter"caught" | "uncaught"Yesenum: "caught", "uncaught""caught" stops on an exception the app itself would otherwise handle; "uncaught" is accepted but adds nothing beyond the always-on default stop on an unhandled exception.
filters[].conditionstringNoOptional per-filter guard expression.

sessionId

Debug session id; defaults to the active session.


Did this page help you?