NationalSecurityAgency/ghidra · error · RuntimeError

Usage: ghidra trace sync-enable

Error message

Usage: ghidra trace sync-enable

What it means

Raised by ghidra_trace_sync_enable when any argument is passed. sync-enable installs hooks (if needed) and enables synchronization for the current process so stops/frames are recorded into the trace; it is parameterless (commands.py:2027). Must be run per-process and only takes effect once a trace is started.

Source

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

def ghidra_trace_sync_enable(debugger: lldb.SBDebugger, command: str,
                             result: lldb.SBCommandReturnObject,
                             internal_dict: Dict[str, Any]) -> None:
    """Synchronize the current process with the Ghidra trace.

    Usage: ghidra trace sync-enable

    This will automatically install hooks if necessary. The goal is to record
    the current frame, thread, and process into the trace immediately, and then
    to append the trace upon stopping and/or selecting new frames. This action
    is effective only for the current process. This command must be executed
    for each individual process you'd like to synchronize.

    This will have no effect unless or until you start a trace.
    """

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

    hooks.install_hooks()
    hooks.enable_current_process()


@convert_errors
def ghidra_trace_sync_disable(debugger: lldb.SBDebugger, command: str,
                              result: lldb.SBCommandReturnObject,
                              internal_dict: Dict[str, Any]) -> None:
    """Cease synchronizing the current process with the Ghidra trace.

    Usage: ghidra trace sync-disable

    This is the opposite of 'ghidra trace sync-enable', except it will not
    automatically remove hooks.
    """

    args = shlex.split(command)

View on GitHub (pinned to d5f144c24d)

Solutions

  1. Run bare: `ghidra trace sync-enable`.
  2. Ensure a trace is started (`ghidra trace start`) first, and repeat the command for each process you want synced.

Example fix

// before
ghidra trace sync-enable all
// after
ghidra trace sync-enable
Defensive patterns

Strategy: validation

Validate before calling

assert len(command.split()) == 0, "sync-enable takes no arguments"

Prevention

When it happens

Trigger: Appending a process id or `all` like `ghidra trace sync-enable all`, or trailing text.

Common situations: Users try to enable sync for every process at once; the command targets only the current process and must be repeated per process. It also silently does nothing until a trace exists.

Related errors


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