LLDB-MCP
在acton中看到它,自动调试缓冲区溢出:https://x.com/full_duplex/status/1904770477698277847
概述
LLDB-MCP是一个将LLDB调试器与Claude的模型上下文协议(MCP)集成在一起的工具。这种集成允许Claude直接启动、控制LLDB调试会话并与之交互,从而启用AI辅助的调试工作流。
该工具为使用LLDB提供了一套全面的命令,包括:
- 启动和管理LLDB会话
- 正在加载调试程序
- 设置断点和观察点
- 控制程序执行
- 检查内存、寄存器和变量
- 分析堆栈跟踪和程序状态
特性
- 创建和管理多个LLDB调试会话
- 加载可执行文件并附加到正在运行的进程
- 加载岩芯转储文件以进行尸检分析
- 执行任意LLDB命令
- 对程序执行的细粒度控制
- 内存检查和拆卸
- 螺纹和堆叠框架检查
安装
- 克隆存储库:
git clone https://github.com/stass/lldb-mcp.git
cd lldb-mcp- 安装依赖项:
pip install mcp- 配置Claude以使用LLDB-MCP服务器:
- 打开Claude桌面应用程序配置 - 将以下内容添加到MCP配置中:
"mcpServers": {
"lldb-mcp": {
"command": "python3",
"args": ["/path/to/lldb-mcp/lldb_mcp.py"],
"disabled": false
}
}用法
安装和配置后,您可以使用自然语言通过Claude与LLDB进行交互。
基本工作流程
- 启动新的LLDB会话
- 加载程序
- 设置断点
- 运行程序
- 检查变量和内存
- 控制执行(继续、步骤、下一步等)
- 完成后终止会话
示例命令
以下是一些通过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条款
