{"record":{"id":"b4d3cb3d47a4f636","repo":"NationalSecurityAgency/ghidra","slug":"usage-ghidra-trace-put-available","errorCode":null,"errorMessage":"Usage: ghidra trace put-available","messagePattern":"Usage: ghidra trace put-available","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py","lineNumber":1524,"sourceCode":"        else:\n        \tprocobj.set_value('Name', proc.name())\n        \tprocobj.set_value('_display', f'{proc.pid} {proc.name()}')\n        procobj.insert()\n    trace.proxy_object_path(AVAILABLES_PATH).retain_values(keys)\n\n\n@convert_errors\ndef ghidra_trace_put_available(debugger: lldb.SBDebugger, command: str,\n                               result: lldb.SBCommandReturnObject,\n                               internal_dict: Dict[str, Any]) -> None:\n    \"\"\"Put the list of available processes into the trace's Available list.\n\n    Usage: ghidra trace put-available\n    \"\"\"\n\n    args = shlex.split(command)\n    if len(args) != 0:\n        raise RuntimeError(\"Usage: ghidra trace put-available\")\n\n    trace, tx = STATE.require_tx()\n    with trace.client.batch() as b:\n        put_available()\n\n\ndef put_single_breakpoint(b: lldb.SBBreakpoint, proc: lldb.SBProcess) -> None:\n    trace = STATE.require_trace()\n    mapper = trace.extra.require_mm()\n    bpt_path = PROC_BREAK_PATTERN.format(\n        procnum=proc.GetProcessID(), breaknum=b.GetID())\n    bpt_obj = trace.create_object(bpt_path)\n    if b.IsHardware():\n        bpt_obj.set_value('Expression', util.get_description(b))\n        bpt_obj.set_value('Kinds', 'X')\n    else:\n        bpt_obj.set_value('Expression', util.get_description(b))\n        bpt_obj.set_value('Kinds', 'x')","sourceCodeStart":1506,"sourceCodeEnd":1542,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py#L1506-L1542","documentation":"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.","triggerScenarios":"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.","commonSituations":"Misreading the command as taking a remote host or platform filter; copying a command template that left a placeholder token un-substituted.","solutions":["Invoke with no arguments: `ghidra trace put-available`.","Configure available-process discovery at the LLDB/platform level, not via this command's arguments."],"exampleFix":"// before\nghidra trace put-available remote\n// after\nghidra trace put-available","handlingStrategy":"validation","validationCode":"assert len(command.split()) == 0, \"put-available takes no arguments\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["put-available publishes all attachable processes — no host/pid filter arg.","Configure discovery at the LLDB platform level instead."],"tags":["lldb","ghidra","cli-usage","debugger-agent","available-processes"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}