NationalSecurityAgency/ghidra · error · RuntimeError
Usage: ghidra trace put-available
Error message
Usage: ghidra trace put-available
What it means
Raised by ghidra_trace_put_available when any argument is passed. put-available publishes the list of attachable/available processes (from util.AVAILABLE_INFO_READER) into the trace's Available list; it is parameterless and rejects tokens at commands.py:1524.
Source
Thrown at Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py:1524
else:
procobj.set_value('Name', proc.name())
procobj.set_value('_display', f'{proc.pid} {proc.name()}')
procobj.insert()
trace.proxy_object_path(AVAILABLES_PATH).retain_values(keys)
@convert_errors
def ghidra_trace_put_available(debugger: lldb.SBDebugger, command: str,
result: lldb.SBCommandReturnObject,
internal_dict: Dict[str, Any]) -> None:
"""Put the list of available processes into the trace's Available list.
Usage: ghidra trace put-available
"""
args = shlex.split(command)
if len(args) != 0:
raise RuntimeError("Usage: ghidra trace put-available")
trace, tx = STATE.require_tx()
with trace.client.batch() as b:
put_available()
def put_single_breakpoint(b: lldb.SBBreakpoint, proc: lldb.SBProcess) -> None:
trace = STATE.require_trace()
mapper = trace.extra.require_mm()
bpt_path = PROC_BREAK_PATTERN.format(
procnum=proc.GetProcessID(), breaknum=b.GetID())
bpt_obj = trace.create_object(bpt_path)
if b.IsHardware():
bpt_obj.set_value('Expression', util.get_description(b))
bpt_obj.set_value('Kinds', 'X')
else:
bpt_obj.set_value('Expression', util.get_description(b))
bpt_obj.set_value('Kinds', 'x')View on GitHub (pinned to d5f144c24d)
Solutions
- Invoke with no arguments: `ghidra trace put-available`.
- Configure available-process discovery at the LLDB/platform level, not via this command's arguments.
Example fix
// before ghidra trace put-available remote // after ghidra trace put-available
Defensive patterns
Strategy: validation
Validate before calling
assert len(command.split()) == 0, "put-available takes no arguments"
Prevention
- put-available publishes all attachable processes — no host/pid filter arg.
- Configure discovery at the LLDB platform level instead.
When it happens
Trigger: Calling `ghidra trace put-available local`, appending a filter/pid, or stray text after the command. Users sometimes try to scope the available list to a host or pid.
Common situations: Misreading the command as taking a remote host or platform filter; copying a command template that left a placeholder token un-substituted.
Related errors
- Usage: ghidra trace disassemble ADDRESS
- Usage: ghidra trace put-processes
- Usage: ghidra trace put-breakpoints
- Usage: ghidra trace put-watchpoints
- Usage: ghidra trace put-environment
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/b4d3cb3d47a4f636.
Report an issue: GitHub.