Token导航 LogoToken导航TokenDH.com
MCP Crash Analyzer logo
开发工具stdio官方级别未说明来源级核验

MCP Crash Analyzer

MCP Server

一个基于GDB的自动化程序崩溃分析工具,提供寄存器状态、内存快照、反汇编和堆栈跟踪等详细调试信息。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude调试工具ClaudeCline

安装说明

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

作者 / 组织

maglu

提供方

maglu

最后核验

2026/5/17 20:20

快速接入

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

命令预览

pip install -r requirements.txt

详细介绍

MCP碰撞分析仪

使用GDB进行自动崩溃分析的模型上下文协议(MCP)服务器。

引言

此MCP工具分析程序崩溃,并提供详细的调试见解,包括寄存器状态、内存快照、反汇编和堆栈跟踪。

它是作为一项学习练习而创建的,旨在探索模型上下文协议(MCP)的工作原理,主要是在人工智能代理的帮助下构建的。该工具已经在一些特定的碰撞场景中进行了测试,并产生了有希望的结果,尽管它还没有在更复杂的情况下得到深入验证。

我不打算继续积极开发,但如果你遇到问题或有有趣的功能想法,请随时在“问题”选项卡中打开工单——如果时间允许,我会看看。贡献、反馈或分叉总是受欢迎的。

License: MIT Python: 3.8+

特性

🔍 自动碰撞检测 -运行程序并自动检测崩溃\ 📊 综合分析 -捕获信号、位置、回溯、寄存器、内存\ 🎯 智能拆解 -带碰撞位置标记的全功能拆卸\ 💾 内存检查 -以十六进制/ASCII格式读取任何地址的内存\ ⚙️ 注册状态 -崩溃时完成CPU寄存器快照\ 🏗️ 系统信息 -架构、调试符号、端序检测\ ⚡ 基于会话 -加载一次,查询多次进行详细分析

快速开始

安装

# Install dependencies
pip install -r requirements.txt

配置

添加到MCP设置文件中:

VS代码与Cline (~/.config/Code/User/mcp.json):

{
  "mcpServers": {
    "crash-analyzer": {
      "command": "python3",
      "args": ["/absolute/path/to/mcp_crash_analyzer.py"]
    }
  }
}

克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "crash-analyzer": {
      "command": "python3",
      "args": ["/absolute/path/to/mcp_crash_analyzer.py"]
    }
  }
}

环境变量

  • MCP_CRASH_ANALYZER_LOG -自定义日志文件路径(可选)

- 违约: ~/.cache/mcp_crash_analyzer.log - 例子: export MCP_CRASH_ANALYZER_LOG=/var/log/crash_analyzer.log

用法

基本工作流程

  1. 加载并运行 一个程序直到崩溃:
load_and_run("/path/to/program", args=["arg1"], timeout=10)
  1. 分析坠机事件:
get_disassembly_function()  # See crash instruction
get_registers()             # Check CPU state
read_memory("$rsp", 64)     # Inspect memory
  1. 完成后关闭:
close_session()

可用工具

核心工具

  • load_and_run(binary_path, args=None, timeout=10)\

加载并运行程序,直到崩溃或退出

  • get_registers(register_names=None)\

在崩溃时获取CPU寄存器值

  • get_disassembly_function()\

完全拆卸碰撞功能

  • get_disassembly_range(start_address, end_address, mode=0)\

分解特定地址范围

  • read_memory(address, size, format="hex")\

读取任何地址的内存

  • get_system_info()\

获取架构和调试信息

  • get_full_report()\

获取完整的碰撞报告

  • close_session()\

关闭GDB会话

实例分析

# 1. Run program
result = load_and_run("/path/to/crashed_program")
# {"crashed": true, "signal": "SIGSEGV", ...}

# 2. See where it crashed
disasm = get_disassembly_function()
# "0x12345: mov (%rax),%ebx ← CRASH"

# 3. Check registers
regs = get_registers(["rax", "rbx", "rsp"])
# {"rax": "0x0", "rbx": "0x7fff...", ...}

# 4. Read stack
mem = read_memory("$rsp", 128, "both")

# 5. Close
close_session()

输出示例

{
  "crashed": true,
  "signal": {
    "name": "SIGSEGV",
    "meaning": "Segmentation fault"
  },
  "location": {
    "function": "process_data",
    "address": "0x555555555234",
    "file": "main.c",
    "line": "42"
  },
  "disassembly": [
    "0x555555555230: mov    %rdi,%rax",
    "0x555555555234: mov    (%rax),%edx ← CRASH",
    "0x555555555236: add    $0x1,%edx"
  ]
}

常见信号类型

在分析崩溃时,您会遇到以下常见信号:

  • 西格夫 -分段错误(无效内存访问、空指针解引用)
  • 信号中止 -中止信号(断言失败, abort() 呼叫)
  • 浮点异常 -浮点异常(除零,数学运算无效)
  • 非法指令 -非法指令(代码损坏、架构错误)
  • SIGBUS -总线错误(内存访问未对齐)
  • SIGSYS -系统调用错误

需求

  • Python 3.8+
  • GDB(GNU调试器)
  • pygdbmi -Python GDB机器接口
  • fastmcp -快速MCP服务器框架

用例

  • 自动化测试:检测和分析CI/CD管道中的崩溃
  • 缺陷类选:生成具有完整上下文的详细碰撞报告
  • 法医学:生产崩溃的事后调试
  • 证券分析:分析漏洞和漏洞
  • 学习:研究汇编,了解程序崩溃的原因
  • 发展:无需手动GDB会话即可快速进行崩溃分析

碰撞分析工作流程

崩溃分析器提供有关程序故障的详细信息:

什么被捕获

  1. 信号信息 -碰撞类型及其原因
  2. 碰撞位置 -精确的函数、文件、行和地址
  3. 回溯 -完整的调用堆栈,显示程序是如何到达崩溃的
  4. 寄存器值 -崩溃时的CPU状态(用于低级调试)
  5. 局部变量 -崩溃函数中的变量值
  6. 反汇编 -碰撞地址周围的装配说明
  7. 内存状态 -堆叠和堆检查
  8. 控制台输出 -崩溃前的所有程序输出

分析模式

基于会话(高级):

  • 使用以下命令加载程序一次 load_and_run()
  • 使用单个工具查询详细信息
  • 对检查内容进行精细控制
  • 最适合深度调试

完整报告(快速):

  • 立即获取所有内容 get_full_report()
  • 在一次通话中完成碰撞分析
  • 最适合自动报告

运作原理

  1. 用途 pygdbmi 通过机器接口控制GDB
  2. 在加载和分析之间保持会话状态
  3. 在崩溃时刻捕获寄存器快照
  4. 提供多种分析视图(反汇编、内存、寄存器)

局限性

  • 平台:仅限Linux/Unix(需要GDB)
  • 执行:程序必须具有适当的权限才能执行
  • 可重复性:碰撞必须是可再现的(确定性)
  • 调试信息:源代码行信息需要调试符号(-g 旗帜)
  • 内核转储:无法直接分析核心转储(请运行程序)
  • 单次碰撞:仅分析第一次碰撞(碰撞后不继续)
  • 优化:高度优化的代码可能包含不完整的变量信息

最佳实践

  1. 使用调试符号编译:使用 -g 源线信息标志
  2. 调试期间禁用优化:使用 -O0 保存可变信息
  3. 设置适当的超时:增加慢速启动程序的超时时间
  4. 检查权限:确保二进制文件具有执行权限(chmod +x)
  5. 使用绝对路径:提供二进制文件和源文件的完整路径

🐛 故障排除

问题解决方案
导入错误pip3 install pygdbmi fastmcp
未找到GDBsudo apt install gdb
会话已在运行呼叫 close_session() 首先
超时错误增加超时参数 load_and_run()
无调试符号使用编译 -g 标志: gcc -g -o program program.c
缺少源信息确保源文件可以在原始路径上访问
回溯不完整编译时不进行优化: gcc -g -O0 -o program program.c
权限被拒绝使二进制文件可执行: chmod +x program
未检测到崩溃检查程序是否需要输入或增加超时
需要调试日志检查 ~/.cache/mcp_crash_analyzer.log 查看详细日志

📚 资源

  • pygdbmi: https://github.com/cs01/pygdbmi
  • GDB/MI: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html
  • 主控程序: https://modelcontextprotocol.io/

许可证

MIT许可证-免费使用和修改

作者

马格努斯·卢切斯

______________________________________________________________________

备注:此工具自动化GDB进行崩溃分析。对于交互式调试,直接使用GDB。

目录标签

目录标签

PythonClaude调试工具崩溃分析本地部署程序错误检测内存检查反汇编

支持客户端

ClaudeCline

接入字段

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

stdio

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

none

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP