{"record":{"id":"38edb0db38465558","repo":"NationalSecurityAgency/ghidra","slug":"usage-ghidra-trace-put-all","errorCode":null,"errorMessage":"Usage: ghidra trace put-all","messagePattern":"Usage: ghidra trace put-all","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py","lineNumber":1953,"sourceCode":"        raise RuntimeError(\"Usage: ghidra trace put-frames\")\n\n    trace, tx = STATE.require_tx()\n    with trace.client.batch() as b:\n        put_frames()\n\n\n@convert_errors\ndef ghidra_trace_put_all(debugger: lldb.SBDebugger, command: str,\n                         result: lldb.SBCommandReturnObject,\n                         internal_dict: Dict[str, Any]) -> None:\n    \"\"\"Put everything currently selected into the Ghidra trace.\n\n    Usage: ghidra trace put-all\n    \"\"\"\n\n    args = shlex.split(command)\n    if len(args) != 0:\n        raise RuntimeError(\"Usage: ghidra trace put-all\")\n\n    trace, tx = STATE.require_tx()\n    with trace.client.batch() as b:\n        ghidra_trace_putreg(debugger, DEFAULT_REGISTER_BANK,\n                            result, internal_dict)\n        ghidra_trace_putmem(debugger, \"$pc 1\", result, internal_dict)\n        ghidra_trace_putmem(debugger, \"$sp 1\", result, internal_dict)\n        put_processes()\n        put_environment()\n        put_regions()\n        put_modules()\n        put_threads()\n        put_frames()\n        put_breakpoints()\n        put_watchpoints()\n        put_available()\n\n","sourceCodeStart":1935,"sourceCodeEnd":1971,"githubUrl":"https://github.com/NationalSecurityAgency/ghidra/blob/d5f144c24d6bc53c9cbf4448c6d11143e7696206/Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py#L1935-L1971","documentation":"Raised by ghidra_trace_put_all when any argument is passed. put-all aggregates registers, $pc/$sp memory, processes, environment, regions, modules, threads, frames, etc. for the current selection into the trace; it takes no arguments (commands.py:1953).","triggerScenarios":"Appending a scope token like `ghidra trace put-all current` or `put-all processes`, or trailing text from a script.","commonSituations":"Users expect put-all to take a filter or target process. It always operates on the currently selected process/thread and pushes everything.","solutions":["Invoke bare: `ghidra trace put-all`.","Select the desired process/thread in LLDB before running; put-all has no selector."],"exampleFix":"// before\nghidra trace put-all everything\n// after\nghidra trace put-all","handlingStrategy":"validation","validationCode":"assert len(command.split()) == 0, \"put-all takes no arguments\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["put-all snapshots the current selection — no scope/filter arg.","Select the desired process/thread before running."],"tags":["lldb","ghidra","cli-usage","debugger-agent","snapshot"],"backgroundTag":null,"analyzedSha":"d5f144c24d6bc53c9cbf4448c6d11143e7696206","analyzedAt":"2026-08-14T01:00:57.564Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}