NationalSecurityAgency/ghidra · error · RuntimeError
Usage: ghidra trace put-watchpoints
Error message
Usage: ghidra trace put-watchpoints
What it means
Raised by ghidra_trace_put_watchpoints when any argument is supplied. put-watchpoints writes the current process's watchpoints to the trace and is parameterless; the guard at commands.py:1660 rejects tokens.
Source
Thrown at Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py:1660
raise RuntimeError("Usage: ghidra trace put-breakpoints")
trace, tx = STATE.require_tx()
with trace.client.batch() as b:
put_breakpoints()
@convert_errors
def ghidra_trace_put_watchpoints(debugger: lldb.SBDebugger, command: str,
result: lldb.SBCommandReturnObject,
internal_dict: Dict[str, Any]) -> None:
"""Put the current process's watchpoints into the trace.
Usage: ghidra trace put-watchpoints
"""
args = shlex.split(command)
if len(args) != 0:
raise RuntimeError("Usage: ghidra trace put-watchpoints")
trace, tx = STATE.require_tx()
with trace.client.batch() as b:
put_watchpoints()
def put_environment() -> None:
proc = util.get_process()
epath = ENV_PATTERN.format(procnum=proc.GetProcessID())
envobj = STATE.require_trace().create_object(epath)
envobj.set_value('Debugger', 'lldb')
envobj.set_value('Arch', arch.get_arch())
envobj.set_value('OS', arch.get_osabi())
envobj.set_value('Endian', arch.get_endian())
envobj.insert()
@convert_errorsView on GitHub (pinned to d5f144c24d)
Solutions
- Invoke bare: `ghidra trace put-watchpoints`.
- Set/select the desired watchpoint in LLDB before running; the command reflects current state.
Example fix
// before ghidra trace put-watchpoints 1 // after ghidra trace put-watchpoints
Defensive patterns
Strategy: validation
Validate before calling
assert len(command.split()) == 0, "put-watchpoints takes no arguments"
Prevention
- put-watchpoints publishes all watchpoints of the current process.
- No id/address selector is accepted.
When it happens
Trigger: Passing a watchpoint id or address, e.g. `ghidra trace put-watchpoints 1`, or trailing text.
Common situations: Symmetry assumption: since breakpoints can be listed by id in LLDB, users assume watchpoints take a selector here. The agent always publishes all watchpoints for the current process.
Related errors
- Usage: ghidra trace disassemble ADDRESS
- Usage: ghidra trace put-processes
- Usage: ghidra trace put-available
- Usage: ghidra trace put-breakpoints
- Usage: ghidra trace put-environment
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/dcce0b87ebaf4c00.
Report an issue: GitHub.