rr-mcp服务器
MCP(模型上下文协议)服务器,提供用于控制和与Mozilla交互的工具 RR (录制和回放)调试器。这使得AI助手和其他MCP客户端能够以编程方式重放执行跟踪并运行GDB命令。
特性
- 重播管理:启动并管理rr重放会话,以记录执行跟踪
- GDB命令执行:在重播会话期间运行任意GDB/rr命令
- HTTP接口:用于远程调试控制的RESTful API
- 异步通信:GDB机器接口(MI)协议的强大异步处理
- 会话管理:在跟踪之间切换时自动清理
先决条件
- Python 3.12或更高版本
- rr调试器 已安装并在PATH中可用
- 记录的执行痕迹(使用创建
rr record)
安装
使用紫外线(推荐)
uv sync使用pip
pip install -e .用法
启动服务器
python rr_mcp_server.py服务器将于启动 http://0.0.0.0:8000.
MCP工具
服务器通过MCP协议公开了两个工具:
1. rr_replay
启动或重新启动给定跟踪目录的重播会话。
参数:
rr_trace_dir(str):包含rr跟踪的目录的路径
退货:
- 成功时为空字符串,失败时显示错误消息
例子:
rr_replay("/home/user/.local/share/rr/my-trace")2. run_cmd
在活动重放会话期间执行GDB/rr命令。
参数:
cmd(str):要执行的GDB/rr命令
退货:
- 命令执行结果为字符串
例子:
run_cmd("continue")
run_cmd("break main")
run_cmd("backtrace")运作原理
建筑
- RR控制器 (
rr_controller.py):一个包裹pygdbmi.GdbController管理rr重放会话并处理GDB/MI协议通信 - RRMCP服务器 (
rr_mcp_server.py):基于FastMCP的服务器,将RRController功能作为MCP工具公开
GDB机器接口
服务器使用GDB机器接口(MI3)协议与rr通信,该协议提供结构化的、机器可解析的输出。响应是JSON对象 type 和 message 领域。
会话生命周期
- 客户电话
rr_replay带有跟踪目录 - 服务器启动
rr replay -i=mi子进程 - 客户可以致电
run_cmd多次与重播进行交互 - 开始新的重播会自动退出上一个会话
记录痕迹
在使用此服务器之前,您需要使用rr记录执行跟踪:
# Record a program
rr record ./your-program arg1 arg2
# The trace will be saved to ~/.local/share/rr/latest-trace
# or you can specify a custom location日志记录
服务器使用 loguru 用于日志记录:
- 日志被写入
server.log在当前目录中 - 调试级日志也会写入stderr
- 记录GDB/MI协议消息以进行故障排除
工作流示例
# 1. Start a replay session
rr_replay("~/.local/share/rr/my-app-trace")
# 2. Continue execution
run_cmd("continue")
# 3. Set a breakpoint
run_cmd("break some_function")
# 4. Continue to breakpoint
run_cmd("continue")
# 5. Inspect variables
run_cmd("print my_variable")
# 6. Get backtrace
run_cmd("backtrace")
# 7. Step through code
run_cmd("next")
run_cmd("step")
# 8. Reverse execution (rr's superpower!)
run_cmd("reverse-continue")
run_cmd("reverse-step")用例
- 自动调试:让AI助手帮助调试记录的故障
- 碰撞分析:程序化分析CI/CD管道中的崩溃
- 测试调试:自动调查片状测试失败
- 远程调试:调试生产记录,无需手动GDB交互
