LLDB调试集成工具

为LLDB提供Model-Context Protocol (MCP)集成,允许AI助手通过标准化接口与调试会话交互。

  • by ant4g0nist
  • Python
  • 本地部署
  • 756 星标
  • 更新于
在 GitHub 查看 ant4g0nist/lisa.py

使用说明

LLDB MCP集成

该项目为LLDB提供了一个模型上下文协议(MCP)集成,允许像Claude这样的AI助手通过标准化的界面与您的调试会话进行交互。

概述

集成由两个主要部分组成:

  1. 服务器.py -与Claude(或其他MCP客户端)通信的MCP服务器
  2. lldb_plugin.py -一个在LLDB内部运行并通过JSON-RPC公开调试器功能的插件

这种架构允许Claude通过自然语言直接与LLDB交互来帮助您调试代码。MCP服务器充当桥梁,将Claude的请求转换为LLDB命令,并以结构化格式返回结果。

安装

先决条件

  • Python 3.10或更高版本
  • 带有Python绑定的LLDB
  • fastmcp Python包(用于Claude Desktop集成)

设置

  1. 克隆此存储库:

    git clone https://github.com/ant4g0nist/lldb-mcp.git
    cd lldb-mcp
    
  2. 安装所需的依赖项:

    pip install "fastmcp>=1.2.0" httpx
    

    或

    uv install "fastmcp>=1.2.0" httpx
    

用法

方法1:使用Claude for Desktop

  1. 确保已安装Claude for Desktop并将其更新到最新版本。

  2. 通过编辑配置Claude for Desktop以使用LLDB MCP服务器:

    • 路径: ~/Library/Application Support/Claude/claude_desktop_config.json
  3. 更新路径并添加LLDB MCP配置:

    {
      "mcpServers": {
        "lldb": {
          "command": "/path/to/your/.local/bin/uv",
          "args": [
            "--directory",
            "/path/to/your/lldb-mcp/llmcp",
            "run",
            "lldb_mcp.py"
          ]
        }
      }
    }
    
  4. 重新启动桌面版的Claude。

  5. 在LLDB中启动调试会话,并使用以下命令启用MCP服务器:

    (lldb) command script import lisa.py
    
  6. 现在,您应该可以在Claude for Desktop中看到可用的LLDB工具。寻找锤子图标。

方法2:直接LLDB集成

如果您更喜欢直接从LLDB使用插件,而不需要Claude for Desktop:

  1. 将以下内容添加到您的 ~/.lldbinit 自动加载插件的文件:

    command script import /path/to/lldb_plugin.py
    
  2. 在LLDB会话中,启动MCP服务器:

    (lldb) mcp start
    
  3. 服务器将在以下时间可用http://localhost:13338任何MCP客户端都可以连接到。

可用的LLDB工具

MCP服务器为AI助手提供以下方法:

  • create_target -从可执行路径创建调试目标
  • 启动过程 -使用可选参数、环境变量和工作目录启动一个进程
  • 附件_流程 -通过PID附加到正在运行的进程
  • detach_from_process -脱离当前流程
  • 连续过程 -继续执行流程
  • 跨步 -跳过当前行或指令
  • step_into -进入函数调用
  • 退出 -退出当前功能
  • 设断点 -在指定位置设置断点
  • 删除断点 -按ID删除断点
  • 列表_断点 -列出所有断点
  • get_backtrace -获取当前线程或指定线程的回溯
  • get_variables -获取当前帧中的变量
  • get_disassembly -在指定地址或当前电脑周围进行拆卸
  • read_memory -从特定地址读取内存
  • 获取元数据 -获取当前调试会话的元数据
  • run_lldb_命令 -执行任意LLDB命令
  • 求值表达式 -在当前上下文中评估表达式

与Claude的互动示例

设置后,您可以使用自然语言通过Claude与LLDB进行交互。一些例子:

  • “在以下位置调试此程序 /path/to/executable"
  • “在main设置断点”
  • “使用参数运行程序 -v input.txt"
  • “显示当前帧中的变量”
  • “进入下一个函数调用”
  • “现在的回溯是什么?”
  • “评估表达式 ptr->data[i]"
  • “显示当前指令的汇编代码”

故障排除

  • 插件未加载:确保LLDB的Python环境可以访问必要的模块
  • 服务器连接问题:检查端口13338是否已被其他应用程序使用
  • Claude未检测到工具:验证中的配置是否正确 claude_desktop_config.json
  • 命令错误:插件将错误记录到LLDB控制台,请查看那里的详细信息

贡献

欢迎投稿!请随时提交pull请求或为bug和功能请求创建问题。

许可证

Apache许可证

全部

  • []更新说明书
  • []添加更多测试用例

鸣谢