NationalSecurityAgency/ghidra · error · RuntimeError

Usage: ghidra trace put-all

Error message

Usage: ghidra trace put-all

What it means

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).

Source

Thrown at Ghidra/Debug/Debugger-agent-lldb/src/main/py/src/ghidralldb/commands.py:1953

        raise RuntimeError("Usage: ghidra trace put-frames")

    trace, tx = STATE.require_tx()
    with trace.client.batch() as b:
        put_frames()


@convert_errors
def ghidra_trace_put_all(debugger: lldb.SBDebugger, command: str,
                         result: lldb.SBCommandReturnObject,
                         internal_dict: Dict[str, Any]) -> None:
    """Put everything currently selected into the Ghidra trace.

    Usage: ghidra trace put-all
    """

    args = shlex.split(command)
    if len(args) != 0:
        raise RuntimeError("Usage: ghidra trace put-all")

    trace, tx = STATE.require_tx()
    with trace.client.batch() as b:
        ghidra_trace_putreg(debugger, DEFAULT_REGISTER_BANK,
                            result, internal_dict)
        ghidra_trace_putmem(debugger, "$pc 1", result, internal_dict)
        ghidra_trace_putmem(debugger, "$sp 1", result, internal_dict)
        put_processes()
        put_environment()
        put_regions()
        put_modules()
        put_threads()
        put_frames()
        put_breakpoints()
        put_watchpoints()
        put_available()

View on GitHub (pinned to d5f144c24d)

Solutions

  1. Invoke bare: `ghidra trace put-all`.
  2. Select the desired process/thread in LLDB before running; put-all has no selector.

Example fix

// before
ghidra trace put-all everything
// after
ghidra trace put-all
Defensive patterns

Strategy: validation

Validate before calling

assert len(command.split()) == 0, "put-all takes no arguments"

Prevention

When it happens

Trigger: Appending a scope token like `ghidra trace put-all current` or `put-all processes`, or trailing text from a script.

Common situations: Users expect put-all to take a filter or target process. It always operates on the currently selected process/thread and pushes everything.

Related errors


AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14). Data as JSON: /api/errors/38edb0db38465558. Report an issue: GitHub.