返回市场
调试服务器

调试服务器

作者:yywz199958 星标更新:2025-04-08

项目介绍

GDB MCP 服务器

一个支持AI辅助调试的GDB MCP(模型上下文协议)服务器。该服务器允许AI代理和其他工具通过MCP协议与GDB进行交互。

注意:该项目目前处于开发阶段。我们欢迎社区成员提供意见和反馈,帮助我们改进这个工具。

项目地址: https://github.com/yywz1999/gdb-mcp-server

特性

  • 发现并连接到现有的GDB进程
  • 通过终端窗口与GDB通信(优化以支持macOS上的iTerm2)
  • 支持MCP协议,便于集成AI助手
  • 智能处理GDB命令阻塞,自动发送中断信号
  • 支持多种架构、多主机和远程调试场景
  • 通过简单的函数调用执行常见的GDB调试操作:
    • 设置和删除断点
    • 单步执行代码
    • 检查内存
    • 查看寄存器和堆栈跟踪
    • 反汇编代码
    • 获取局部变量

演示视频

该项目包含一个演示视频,展示了使用GDB MCP服务器进行附加调试的完整工作流程:

https://github.com/user-attachments/assets/dbb5c2dc-1bc9-4a19-86d7-c967725bc145

观看此视频可以帮助您更直观地了解GDB MCP服务器如何简化多架构和远程调试场景。

使用说明(以光标为例)

  1. 下载项目并验证:
git clone https://github.com/yywz1999/gdb-mcp-server.git
cd gdb-mcp-server
python3 -m pip install -r requirements.txt
python3 ~/MCP_server/gdb-mcp-server/mcp_server.py

结果显示如下图所示,表示环境正常 环境正常

  1. 配置光标: 配置光标

最新改进

1. 增强的iTerm2支持

  • 优化了iTerm2会话查找和交互机制
  • 使用直接写入命令的方法,无需切换窗口焦点
  • 支持基于会话内容识别GDB会话

2. 智能阻塞处理

  • 自动检测可能导致阻塞的命令(如远程连接、继续执行等)
  • 使用超时机制识别阻塞状态
  • 当检测到阻塞时,自动发送中断信号
  • 提取并返回部分执行结果

3. 更可靠的输出捕获

  • 使用唯一标签来标识命令的输出范围
  • 智能移除GDB提示符和命令回显
  • 多次尝试机制确保可靠的命令响应

技术实现介绍

GDB MCP服务器使用以下技术实现对GDB的控制和通信:

  1. MCP协议实现:使用FastMCP库提供符合模型上下文协议规范的工具接口

  2. 多种通信策略

    • AppleScript:在macOS上与iTerm2通信(推荐)
    • pexpect:直接与GDB进程通信(优先级为Linux)
    • 键盘模拟:作为最后的备用计划
  3. 进程发现:自动搜索系统中运行的GDB进程,无需用户手动指定进程ID

测试环境

  • 操作系统:macOS(Intel架构)
  • Python版本:Python 3.11
  • 终端:iTerm2

安装

  1. 克隆仓库:

    git clone https://github.com/yywz1999/gdb-mcp-server.git
    cd gdb-mcp-server
    
  2. 安装依赖:

    python3 -m pip install -r requirements.txt
    

使用说明

  1. 启动服务器:

    python3 mcp_server.py
    
  2. 使用MCP协议通过服务器与GDB进行交互。服务器提供了以下实用功能:

    系统工具

    • sys_find_gdb_processes - 查找所有正在运行的GDB进程
    • sys_attach_to_gdb - 连接到GDB进程
    • sys_start_gdb_with_remote - 启动GDB并连接到远程目标

    GDB调试工具

    • gdb_execute_command - 执行任何GDB命令
    • gdb_set_breakpoint - 设置断点
    • gdb_delete_breakpoint - 删除断点
    • gdb_step - 单步执行
    • gdb_next - 执行到下一行
    • gdb_finish - 执行到函数返回
    • gdb_continue - 继续执行
    • gdb_get_registers - 获取寄存器值
    • gdb_examine_memory - 检查内存
    • gdb_get_stack - 获取堆栈跟踪
    • gdb_get_locals - 获取局部变量
    • gdb_disassemble - 反汇编代码
    • gdb_connect_remote - 连接到远程调试目标

在macOS上的最佳实践

在macOS上使用GDB MCP服务器时,建议:

  1. 使用iTerm2作为终端模拟器(提供最佳支持)
  2. 在启动服务器之前确保GDB终端窗口已打开
  3. 对于远程调试,建议首先在GDB中手动设置相关配置,然后通过MCP服务器进行连接

故障排除

macOS上的常见问题

  1. 窗口激活问题:如果无法正确激活GDB窗口,请尝试手动将其置于前台
  2. 输入法状态:确保GDB终端不在中文或其他输入法状态下
  3. 命令阻塞:对于被阻塞的命令(如target remote),服务器将自动发送中断信号

Linux上的常见问题

  1. TTY权限:确保当前用户有权访问GDB进程的TTY设备
  2. PEXPECT依赖:确保安装了PEXPECT库

许可证

本项目采用MIT许可证 - 详情见LICENSE文件