mcpField
L
LLDB-MCP

LLDB-MCP

本地服务
github.com/stass开发工具11483 周前更新

关于 LLDB-MCP

LLDB-MCP 是一个 MCP 服务,将 LLDB 调试器接入 MCP,使 AI 客户端能够启动、控制并检查 LLDB 调试会话。适合需要借助 AI 辅助调试本地程序的开发者,例如定位缓冲区溢出等崩溃问题。

主要功能

  1. 01管理多个 LLDB 调试会话
  2. 02加载可执行文件、附加进程或加载 core dump
  3. 03设置断点与观察点
  4. 04控制程序执行(继续、单步、步过、结束函数)
  5. 05检查调用栈、内存、寄存器与变量
  6. 06支持执行任意 LLDB 命令

适用场景

  1. 01调试因特定输入而崩溃的 C 程序
  2. 02分析 core dump 以进行事后排查
  3. 03通过自然语言逐步检查变量与内存

MCP 相关

该项目作为 MCP 服务运行,向 MCP 客户端(如 Claude 桌面应用)暴露 lldb_start、lldb_run、lldb_backtrace 等工具,用于操作 LLDB 会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LLDB-MCP

截图

在此处查看它如何自动调试缓冲区溢出:https://x.com/full_duplex/status/1904770477698277847

概述

LLDB-MCP 是一款将 LLDB 调试器与 Claude 的 Model Context Protocol(MCP)集成的工具。通过此集成,Claude 可以直接启动、控制并与 LLDB 调试会话交互,从而实现 AI 辅助调试工作流。

该工具提供了一套全面的命令,用于使用 LLDB,包括:

  • 启动和管理 LLDB 会话
  • 加载待调试程序
  • 设置断点和监视点
  • 控制程序执行
  • 检查内存、寄存器和变量
  • 分析堆栈跟踪和程序状态

功能

  • 创建和管理多个 LLDB 调试会话
  • 加载可执行文件并附加到正在运行的进程
  • 加载核心转储文件以进行事后分析
  • 执行任意 LLDB 命令
  • 精细控制程序执行
  • 检查内存并反汇编
  • 检查线程和堆栈帧

安装

  1. 克隆代码库:

    git clone https://github.com/stass/lldb-mcp.git
    cd lldb-mcp
    
  2. 安装依赖项:

    pip install mcp
    
  3. 配置 Claude 以使用 LLDB-MCP 服务:

    • 打开 Claude 桌面应用的配置
    • 将以下内容添加到 MCP 配置中:
    "mcpServers": {
      "lldb-mcp": {
        "command": "python3",
        "args": ["/path/to/lldb-mcp/lldb_mcp.py"],
        "disabled": false
      }
    }
    

使用方法

安装并配置完成后,你可以使用自然语言通过 Claude 与 LLDB 交互。

基本工作流
  1. 启动新的 LLDB 会话
  2. 加载程序
  3. 设置断点
  4. 运行程序
  5. 检查变量和内存
  6. 控制执行(继续、步进、下一步等)
  7. 完成后终止会话
命令示例

以下是通过 Claude 与 LLDB-MCP 交互的一些示例:

  • “启动新的 LLDB 会话”
  • “加载程序 '/path/to/executable'”
  • “在 main 处设置断点”
  • “运行程序”
  • “显示回溯”
  • “打印变量 'count' 的值”
  • “跨过下一行”
  • “检查地址 0x1000 处的内存”
  • “显示寄存器值”
  • “继续执行”
  • “终止进程”
  • “终止 LLDB 会话”

支持的命令

会话管理
  • lldb_start:启动新的 LLDB 会话
  • lldb_terminate:终止 LLDB 会话
  • lldb_list_sessions:列出所有活动的 LLDB 会话
程序加载
  • lldb_load:将程序加载到 LLDB 中
  • lldb_attach:附加到正在运行的进程
  • lldb_load_core:加载核心转储文件
执行控制
  • lldb_run:运行已加载的程序
  • lldb_continue:继续执行程序
  • lldb_step:步进到下一行或指令
  • lldb_next:跨过函数调用
  • lldb_finish:执行直至当前函数返回
  • lldb_kill:终止正在运行的进程
断点和监视点
  • lldb_set_breakpoint:设置断点
  • lldb_breakpoint_list:列出所有断点
  • lldb_breakpoint_delete:删除断点
  • lldb_watchpoint:在变量或内存地址上设置监视点
检查
  • lldb_backtrace:显示调用栈
  • lldb_print:打印表达式的值
  • lldb_examine:检查内存
  • lldb_info_registers:显示寄存器
  • lldb_frame_info:获取有关堆栈帧的详细信息
  • lldb_disassemble:反汇编代码
  • lldb_process_info:获取当前进程的信息
线程管理
  • lldb_thread_list:列出当前进程中的所有线程
  • lldb_thread_select:选择特定线程
其他
  • lldb_command:执行任意 LLDB 命令
  • lldb_expression:在当前帧中计算表达式
  • lldb_help:获取 LLDB 命令帮助

示例程序

example/overflow.c 包含一个示例 C 程序,使用特定参数时会导致缓冲区溢出。 使用 cc overflow.c 编译,然后让 Claude 调试生成的程序中的问题:

I'm trying to debug my program a.out that is crashing with certain arguments, e.g. when I pass "hello".
Can you help me debug it?

调试提示

  • 需要执行没有专用函数的 LLDB 命令时,请使用 lldb_command
  • 启动服务时使用 --debug 标志启用调试模式,以获取详细日志
  • 服务关闭时会自动清理会话
  • 每个会话都有唯一 ID — 执行命令时请确保使用正确的 ID

要求

  • Python 3.7+
  • 系统已安装 LLDB
  • 支持 MCP 的 Claude 桌面应用

故障排除

  • 如果 LLDB 命令超时,请检查 LLDB 是否已正确安装
  • 启动新会话时,请确认 LLDB 的路径
  • 检查附加到进程时是否存在权限问题
  • 如果命令无法正确执行,请查看调试日志

许可证

BSD 2-clause

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。