Skip to main content
Glama

lldb_registers

View CPU register values at a breakpoint in C/C++ programs. Display general, floating point, or vector registers in hexadecimal format to debug low-level execution.

Instructions

View CPU register values at a breakpoint.

Register sets:
- 'general': General purpose registers (rax, rbx, rsp, etc.)
- 'float': Floating point registers
- 'vector': SIMD/vector registers (xmm, ymm)
- 'all': All register sets

Args:
    params: RegistersInput with breakpoint and register selection

Returns:
    str: Register values in hexadecimal format

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paramsYes

Implementation Reference

  • Main handler function that executes LLDB commands to read CPU registers at a specified breakpoint and returns formatted output.
    async def lldb_registers(params: RegistersInput) -> str:
        """View CPU register values at a breakpoint.
    
        Register sets:
        - 'general': General purpose registers (rax, rbx, rsp, etc.)
        - 'float': Floating point registers
        - 'vector': SIMD/vector registers (xmm, ymm)
        - 'all': All register sets
    
        Args:
            params: RegistersInput with breakpoint and register selection
    
        Returns:
            str: Register values in hexadecimal format
        """
        commands = [
            f"target create {params.executable}",
            f"breakpoint set --name {params.breakpoint}",
            "run" + (" " + " ".join(params.args) if params.args else ""),
        ]
    
        if params.specific_registers:
            reg_cmd = f"register read {' '.join(params.specific_registers)}"
        elif params.register_set == "all":
            reg_cmd = "register read --all"
        elif params.register_set == "float":
            reg_cmd = "register read --set 1"  # Usually FPU
        elif params.register_set == "vector":
            reg_cmd = "register read --set 2"  # Usually SSE/AVX
        else:
            reg_cmd = "register read"
    
        commands.append(reg_cmd)
        commands.append("quit")
    
        result = _run_lldb_script(commands)
    
        return f"## Registers at `{params.breakpoint}`\n\n```\n{result['output'].strip()}\n```"
  • Pydantic input schema defining parameters for the lldb_registers tool, including executable path, breakpoint, register set, specific registers, and arguments.
    class RegistersInput(BaseModel):
        """Input for viewing registers."""
    
        model_config = ConfigDict(str_strip_whitespace=True)
    
        executable: str = Field(..., description="Path to the executable", min_length=1)
        breakpoint: str = Field(..., description="Breakpoint location to stop at", min_length=1)
        register_set: str = Field(
            default="general",
            description="Register set to display: 'general', 'float', 'vector', 'all'",
        )
        specific_registers: list[str] | None = Field(
            default=None, description="Specific register names to show (e.g., ['rax', 'rbx', 'rsp'])"
        )
        args: list[str] | None = Field(
            default=None, description="Command-line arguments to pass to the program"
        )
  • MCP tool registration decorator that registers the lldb_registers handler with the FastMCP server, including metadata annotations.
    @mcp.tool(
        name="lldb_registers",
        annotations={
            "title": "View Registers",
            "readOnlyHint": True,
            "destructiveHint": False,
            "idempotentHint": True,
            "openWorldHint": False,
        },
    )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/benpm/claude_lldb_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server