AI辅助调试工具

LLDB-MCP是一个将LLDB调试器与Claude的模型上下文协议(MCP)集成的工具,支持AI辅助的调试工作流程,包括启动、控制和交互调试会话。

  • by stass
  • Python
  • 本地部署
  • 114 星标
  • 更新于
在 GitHub 查看 stass/lldb-mcp

使用说明

LLDB-MCP

在acton中看到它,自动调试缓冲区溢出:https://x.com/full_duplex/status/1904770477698277847

概述

LLDB-MCP是一个将LLDB调试器与Claude的模型上下文协议(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/executive'”
  • “在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_command 当您需要执行没有专用功能的LLDB命令时
  • 启用调试模式 --debug 启动服务器时标记以进行详细日志记录
  • 服务器关闭时,会话会自动清理
  • 每个会话都有一个唯一的ID-确保在执行命令时使用正确的ID

需求

  • Python 3.7+
  • 系统上安装了LLDB
  • 支持MCP的Claude桌面应用程序

故障排除

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

许可证

BSD 2条款