SuperAPI AI 工具集

lldb-mcp

LLDB-MCP 是一个将 LLDB 调试器与 Claude 的模型上下文协议(MCP)集成的工具,允许 Claude 直接启动、控制和交互 LLDB 调试会话,实现 AI 辅助的调试工作流。它提供了一套完整的命令,用于管理会话、加载程序、设置断点与观察点、控制执行、检查内存/寄存器/变量、分析堆栈跟踪等,支持二进制和核心文件分析、反汇编。

访问官网

工具介绍

LLDB-MCP 是一个将 LLDB 调试器与 Claude 的模型上下文协议(MCP)集成的工具。通过该集成,Claude 可以直接启动、控制和交互 LLDB 调试会话,从而支持 AI 辅助的调试工作流。

用途

LLDB-MCP 旨在让 AI 助手(如 Claude)能够通过自然语言操作 LLDB 调试器,用于二进制和核心文件分析、调试和反汇编。它适用于需要 AI 辅助进行程序调试、崩溃分析、内存检查等场景。

主要能力

该工具提供了一套全面的命令,涵盖以下方面:

  • 启动和管理 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
        }
      }
      
  4. 安装配置完成后,可以通过 Claude 使用自然语言与 LLDB 交互。

示例命令

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

  • "Start a new LLDB session"
  • "Load the program '/path/to/executable'"
  • "Set a breakpoint at main"
  • "Run the program"
  • "Show backtrace"
  • "Print the value of variable 'count'"
  • "Step over the next line"
  • "Examine memory at address 0x1000"
  • "Show register values"
  • "Continue execution"
  • "Kill the process"
  • "Terminate the LLDB session"

支持的命令

会话管理

  • 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 使用生成的程序调试该问题。

使用提示

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

要求

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

故障排除

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