session_id. Create or pick a session first, then load a binary or attach to a running process.
Except for
create_debug_session and list_debug_sessions, the debugger tool family expects an existing session. Use explicit session names for every serious workflow.Session lifecycle tools
| Tool | Use it for | Notes |
|---|---|---|
create_debug_session | create or return a session by id | safe to call repeatedly |
list_debug_sessions | inspect active sessions | returns metadata for all sessions |
close_debug_session | close a session and stop its pwncli driver | releases GDB resources |
get_session_info | inspect cached state without issuing a new GDB command | includes runtime_dir |
Load, attach, and raw command tools
| Tool | Use it for | Notes |
|---|---|---|
set_file | load an executable into GDB | resolve paths under /workspace |
attach | attach to an already running PID | returns attach result plus context snapshots |
set_breakpoint | insert a symbol, address, or file:line breakpoint | optional condition supported |
execute | run raw GDB or pwndbg commands | best for low-level escape hatches |
Common debugger parameters
Debug session to operate on. Required for nearly every debugger tool on this page.
Target binary path. Use a path that resolves under
/workspace.Breakpoint or jump target, such as a symbol,
file:line, or address expression.Raw GDB or pwndbg command for
execute, or a stepping verb such as c, n, s, ni, or si for step_control.Argument string passed to the inferior when using
run.Target process id for
attach.Execution control tools
| Tool | Use it for | Notes |
|---|---|---|
run | start the loaded inferior | supports args and start |
step_control | continue or step execution | supports c, n, s, ni, si |
gdb_poll | drain pending async GDB notifications | useful after async activity |
gdb_interrupt | interrupt a running inferior and wait for stop events | useful when you need control back |
finish | run until the current function returns | wrapper around MI -exec-finish |
jump | resume execution at a location | supports symbol, file:line, or address |
return_from_function | force the current function to return | wrapper around MI -exec-return |
until | run until a location or next source line | optional locspec |
Typical flow
Common edge cases
I got 'session_id is required' or 'session not found'
I got 'session_id is required' or 'session not found'
Create the session first with
create_debug_session, then pass the same session_id on all later calls.I got 'No binary selected' or 'Use set_file first'
I got 'No binary selected' or 'Use set_file first'
Load a file with
set_file before calling run, or pass binary_path where the tool supports it.My attach flow returns more than one thing
My attach flow returns more than one thing
The MCP
attach tool returns the attach result plus a context snapshot list. If you want a single wrapper object instead, use the attach sidecar API described in Attach API.Common debugger response fields
Whether the tool call succeeded.
Session that the tool actually operated on.
Current debugger or inferior state after the operation, when provided by the backend.
Resolved binary path after
set_file or other file-sensitive operations.Session-specific runtime directory returned by
get_session_info.Short actionable error message when the call fails.
Exception type returned by the shared error wrapper on failures.