MCP cdp_debugger_pause

Description

Pauses JS execution on the debugged Roku app via CDP Debugger.pause, and waits for the resulting Debugger.paused event before returning so the caller sees the new paused state.

SEMANTIC CHANGE: this tool now delegates internally to debug_stop. Before aliasing it only ever touched the TypeScript/Hermes side; today, in a unified session, it halts BOTH runtimes (BrightScript too) -- there is no way to request a TypeScript-only stop through this tool name anymore. The response shape changed to match debug_stop's per-runtime outcome report ({ ts: { outcome }, brs?: { outcome } }), not the flat { paused, callFrames } shape this tool returned before aliasing -- call cdp_debugger_state (or debug_state) afterward to see the actual call frames.

Important: pause only takes effect at the next JS statement the app actually executes -- if the app is fully idle (no timers, animations, or user interaction), there is nothing to pause on and the underlying CDP call times out after 5s (confirmed live: an idle app times out every time; it only succeeds once the app happens to be doing something at that exact moment) -- reported as outcome: "not-paused" on the ts side rather than failing the whole call. This is not a bug, but it makes this tool a poor fit for targeted investigation from an agent: even when it succeeds, it lands wherever the app's execution happened to be -- not at a location you chose -- and guessing at app activity (e.g. firing a keypress) beforehand doesn't fix that, since you'd still land somewhere arbitrary, not necessarily in the code path you actually care about. For investigating a specific piece of code, use cdp_breakpoint_set on the exact line first (found via cdp_source_grep/cdp_source_get), then trigger whatever interaction reaches it, then poll cdp_debugger_state -- that flow has no timing window to race and always lands exactly where you intended. This tool remains useful mainly as a blunt "is the app alive and executing JS right now" probe, not as a debugging entry point.

Enables the CDP Debugger domain on first use for the current connection (there is no corresponding "disable" -- a fresh reconnect is the only thing that resets it). cdp_eval keeps working normally whether or not the Debugger domain has been enabled.

Optional parameters:

  • sessionId (string): Session id returned by cdp_session_create. Uses the active session when omitted.

Aliases

Alias of debug_stop.

See also

Parameters

additionalProperties: false

NameTypeRequiredValues
sessionIdstringNo

sessionId

Session id returned by cdp_session_create. Uses the active session when omitted.


Did this page help you?