返回市场
丽莎.py

丽莎.py

作者:ant4g0nist738 星标更新:2025-03-30

项目介绍

LLDB MCP 集成

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

概述

集成由两个主要组件组成:

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

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

安装

先决条件

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

设置

  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桌面一起使用

  1. 确保已安装并更新到最新版本的Claude桌面。

  2. 通过编辑以下内容配置Claude桌面使用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桌面中看到可用的LLDB工具。查找锤子图标。

方法2:直接LLDB集成

如果您希望在不使用Claude桌面的情况下直接从LLDB使用插件:

  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 - 从可执行路径创建调试目标
  • launch_process - 使用可选参数、环境变量和工作目录启动进程
  • attach_to_process - 通过PID附加到正在运行的进程
  • detach_from_process - 从当前进程分离
  • continue_process - 继续进程执行
  • step_over - 跳过当前行或指令
  • step_into - 进入函数调用
  • step_out - 退出当前函数
  • set_breakpoint - 在指定位置设置断点
  • delete_breakpoint - 根据ID删除断点
  • list_breakpoints - 列出所有断点
  • get_backtrace - 获取当前线程或指定线程的回溯
  • get_variables - 获取当前帧中的变量
  • get_disassembly - 获取指定地址或当前PC周围的反汇编
  • read_memory - 从特定地址读取内存
  • get_metadata - 获取有关当前调试会话的元数据
  • run_lldb_command - 执行任意LLDB命令
  • evaluate_expression - 在当前上下文中评估表达式

与Claude的示例交互

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

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

故障排除

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

贡献

欢迎贡献!请随意提交拉取请求或为错误和功能请求创建问题。

许可证

Apache许可证

待办事项

  • 更新操作手册
  • 添加更多测试用例

致谢