Token导航 LogoToken导航TokenDH.com
Karellen Rr MCP logo
运维云端stdio官方级别未说明来源级核验

Karellen Rr MCP

MCP Server

karellen-rr-mcp是一个MCP服务器,允许MCP兼容的LLM客户端使用rr进行反向调试,支持记录和回放测试,无需修改源代码。

工具数

28

提示词数

0

GitHub Stars

3

资源数

0
PythonClaudeLLM工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

karellen

提供方

karellen

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install karellen-rr-mcp[rr]

详细介绍

用于rr反向调试的MCP服务器(karellen rr-MCP)

![Gitter](https://gitter.im/karellen/Lobby) ![Build Status](https://github.com/karellen/karellen-rr-mcp/actions/workflows/build.yml) ![Coverage Status](https://coveralls.io/r/karellen/karellen-rr-mcp?branch=master)

](https://pypi.org/project/karellen-rr-mcp/) ](https://pypi.org/project/karellen-rr-mcp/) ](https://pypi.org/project/karellen-rr-mcp/) ](https://pypi.org/project/karellen-rr-mcp/) ](https://pypi.org/project/karellen-rr-mcp/)

概述

karellen-rr-mcp 是一个 主控程序 (模型上下文协议) 允许任何符合MCP的LLM客户端使用的服务器 rr 为了 反向调试。LLM可以迭代地添加调试输出和重建,而不是 使用rr记录失败的测试,然后通过以下方式进行完整的正向和反向调试 GDB/MI,在不修改源代码的情况下检查程序状态。

需求

  • Linux 在x86-64上(rr仅支持Linux;aarch64是实验性的)
  • rr 已安装并位于PATH上
  • GDB 已安装并位于PATH上(rr用于调试)
  • python >= 3.10
  • perf_event_paranoid 着手 1 允许录制:
  sudo sysctl kernel.perf_event_paranoid=1

安装rr和GDB

通过pip (使用 卡雷伦):

pip install karellen-rr-mcp[rr]

这将rr作为pip包与karellen rr-mcp一起安装。GDB仍必须安装 单独通过您的系统包管理器。

Fedora/RHEL/CentOS:

sudo dnf install rr gdb

Ubuntu/Debian:

sudo apt install rr gdb

Arch Linux:

sudo pacman -S rr gdb

配置perf_event_paranoid

rr需要访问硬件性能计数器。集 perf_event_paranoid1:

sudo sysctl kernel.perf_event_paranoid=1

要使其在重新启动后持续存在,请执行以下操作:

echo 'kernel.perf_event_paranoid=1' | sudo tee /etc/sysctl.d/50-rr.conf

验证设置

rr record /bin/true && echo "rr is working"

如果由于权限错误而失败,请检查 perf_event_paranoid.如果里面坏了 容器或VM,请注意rr需要访问CPU性能计数器——确实如此 除非硬件PMU passthrough在大多数容器(Docker、Podman)或VM中不起作用 已配置。

安装

pip install karellen-rr-mcp

或者使用pipx用于隔离环境:

pipx install karellen-rr-mcp

Claude代码集成

Claude Code插件(推荐)

该插件自动配置MCP服务器,包括:

  • 碰撞检测钩 当Bash命令带信号退出时,这表示rr

(SIGSEGV、SIGABRT、SIGBUS等)或输出包含崩溃/清理签名

  • /karellen-rr-mcp:rr-debug 技能 它穿过整个

逐步记录回放分析工作流程

  • rr-investigator 代理 克劳德可以自主地进行调查

使用rr反向执行崩溃

Karellen插件市场:

claude plugin marketplace add karellen/claude-plugins
claude plugin install karellen-rr-mcp@karellen-plugins

或者从官方的Anthropic市场(如果接受):

claude plugin install karellen-rr-mcp@claude-plugins-official

或者直接从本地收银台加载进行测试:

claude --plugin-dir /path/to/karellen-rr-mcp

手动MCP服务器配置

如果您不想使用该插件,可以直接配置MCP服务器。 这为您提供了MCP工具,但没有技能、代理或碰撞检测挂钩。

使用CLI:

claude mcp add --transport stdio karellen-rr-mcp -- karellen-rr-mcp

或手动添加到 ~/.claude.json (用户范围)或 .mcp.json 在项目根目录中 (项目范围,通过版本控制共享):

{
  "mcpServers": {
    "karellen-rr-mcp": {
      "type": "stdio",
      "command": "karellen-rr-mcp"
    }
  }
}

如果与pipx一起安装:

claude mcp add --transport stdio karellen-rr-mcp -- pipx run karellen-rr-mcp

或手动:

{
  "mcpServers": {
    "karellen-rr-mcp": {
      "type": "stdio",
      "command": "pipx",
      "args": ["run", "karellen-rr-mcp"]
    }
  }
}

自动批准rr工具

默认情况下,Claude Code将在每次操作之前提示确认 rr_* 工具调用。 当系统提示时,您可以通过选择“是,不再询问”来单独批准。

要预先自动批准所有工具,请在用户设置中添加权限规则 (~/.claude/settings.json):

{
  "permissions": {
    "allow": [
      "mcp__plugin_karellen-rr-mcp_karellen-rr-mcp__*",
      "mcp__karellen-rr-mcp__*"
    ]
  }
}

第一条规则涵盖插件加载工具,第二条规则涵盖手动MCP配置。

或者,对于项目范围的设置,将相同的规则添加到 .claude/settings.json 在你的 项目根目录(此文件可以提交给版本控制,以便所有团队成员都能获得它)。

可用工具

会话生命周期

工具说明
rr_record用rr录制命令。返回跟踪目录路径。
rr_replay_start启动重播会话(启动rr-gdbserver+GDB/MI)。
rr_replay_stop停止当前重播会话,清理。
rr_list_recordings列出可用的rr跟踪记录。
rr_ps在跟踪记录中列出进程(PID、PPID、退出代码、命令)。
rr_traceinfo获取跟踪元数据(JSON格式的标头信息)。
rr_rm删除rr跟踪记录。
rr_when获取当前rr事件编号(跟踪中的位置)。

断点

工具说明
rr_breakpoint_set在函数/文件:行/地址处设置断点。
rr_breakpoint_remove删除断点。
rr_breakpoint_list列出所有断点。
rr_watchpoint_set设置硬件监视点(写/读/访问)。

执行控制

工具说明
rr_continue继续前进或后退。
rr_step进入(前进或后退)。
rr_next跨过(向前或向后)。
rr_finish运行以返回函数(如果相反,则调用site)。
rr_run_to_event跳转到特定的rr事件编号。

线程和帧导航

工具说明
rr_thread_list列出所有线程的状态和位置。
rr_thread_select切换到其他线程。
rr_select_frame选择一个堆栈框架进行检查(局部/评估使用该框架)。

状态检测

工具说明
rr_backtrace获取调用堆栈。
rr_evaluate在当前上下文中计算C/C++表达式。
rr_locals列出具有值的局部变量。
rr_read_memory读取原始内存字节。
rr_registers读取CPU寄存器。
rr_source_lines列出当前位置附近的源代码。

检查点

工具说明
rr_checkpoint_save将检查点保存在当前位置。
rr_checkpoint_restore还原到已保存的检查点。

配置

超时

所有超时都可以通过环境变量(以秒为单位)进行配置。将它们设置在您的 MCP服务器配置:

{
  "mcpServers": {
    "karellen-rr-mcp": {
      "type": "stdio",
      "command": "karellen-rr-mcp",
      "env": {
        "RR_MCP_TIMEOUT_FORWARD": "300",
        "RR_MCP_TIMEOUT_REVERSE": "600"
      }
    }
  }
}
变量默认值描述
RR_MCP_TIMEOUT_STARTUP30等待rr-gdbserver开始监听
RR_MCP_TIMEOUT_CONNECT60GDB连接到rr(包括符号加载)
RR_MCP_TIMEOUT_FORWARD120正向执行(继续、步骤、下一步、完成)
RR_MCP_TIMEOUT_REVERSE300反向执行
RR_MCP_TIMEOUT_BREAKPOINT30断点/观察点操作
RR_MCP_TIMEOUT_EVAL30国家检查(回溯、评估、当地人等)

对于大型二进制文件(例如MariaDB、Firefox),您可能需要增加 RR_MCP_TIMEOUT_CONNECT (符号加载可能需要20+秒)和 RR_MCP_TIMEOUT_FORWARD (回放到a 执行过程中的断点可能需要几分钟)。

故障排除

AMD Zen CPU

除非硬件SpecLockMap优化,否则rr在AMD Zen CPU上无法可靠工作 已禁用。在Zen上运行rr时,您可能会看到:

在Zen CPU上,除非禁用硬件SpecLockMap,否则rr将无法可靠工作 优化。

解决方法: 运行 zen_workaround.py 脚本来自 rr源树 根:

sudo python3 scripts/zen_workaround.py

每次重新启动或挂起后都必须重新应用此修复程序。为了让它持续下去,你必须 还可以通过添加以下之一来稳定投机性存储旁路(SSB)缓解措施 以下内核命令行参数:

  • spec_store_bypass_disable=on --完全启用SSB缓解(具有性能

影响)

  • nospec_store_bypass_disable --完全禁用SSB缓解(具有安全性

影响)

或者,构建并加载 zen_workaround.ko 来自rr源代码的内核模块 树,防止SSB缓解措施在不需要的情况下重置解决方法 内核参数。

请参阅 rr-Zen维基页面 了解全部细节。

MSR内核模块未加载

zen_workaround.py 脚本通过以下方式访问CPU型号特定的寄存器 /dev/cpu/0/msr, 这需要 msr 内核模块。在许多发行版上,此模块未加载 默认情况下。如果脚本失败,请手动加载:

sudo modprobe msr

要使其在重新启动后持续存在,请执行以下操作:

echo 'msr' | sudo tee /etc/modules-load.d/msr.conf

注: 在启用了安全引导的系统上 msr 模块可能无法加载,因为 它没有签名。您可能需要在UEFI/BIOS设置中禁用安全引导, 或者使用您自己的机器所有者密钥(MOK)对模块进行签名。

使用glibc 2.42在内核6.13+上发生MADV_GUARD_INSTALL崩溃+

Linux 6.13发布 MADV_GUARD_INSTALL (madvise建议102)用于轻量级堆栈 保护页面。glibc 2.42+(例如Fedora 43)在 pthread_create.rr 5.9.0 (最新版本,从2025年2月开始)不承认这种疯狂的建议价值 并与以下设备发生碰撞:

Assertion `t->regs().syscall_result_signed() == -syscall_state.expect_errno' failed to hold.
Expected EINVAL for 'madvise' but got result 0 (errno SUCCESS); unknown madvise(102)

这在rr-git-master中已修复 (提交34ff3a7,2025年8月) 但尚未包含在版本中。 您必须从源代码构建rr 得到 修复:

git clone https://github.com/rr-debugger/rr.git
cd rr
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

rr调试器/rr#4044rr调试器/rr#3995 了解详情。

许可证

阿帕奇-2.0

目录标签

目录标签

PythonClaudeLLM工具反向调试本地部署MCP服务器rr集成GDB调试

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

28

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP