返回 MCP 目录
public公开dns本地运行

gdb-mcp-server

GDB MCP服务器是一个支持AI辅助调试的工具,通过MCP协议实现与GDB的交互,简化多架构和远程调试流程。

article

README

🚀 GDB 调试服务器

GDB 调试服务器是一款支持 AI 辅助调试的工具,它允许 AI 代理及其他工具借助 MCP 协议与 GDB 展开交互。此项目托管于 GitHub,目前仍在开发中,欢迎社区反馈意见。

🚀 快速开始

GDB 调试服务器支持 AI 辅助调试,允许工具通过 MCP 协议与 GDB 交互。你可以按以下步骤下载、安装并启动服务器:

下载与安装

git clone https://github.com/your-username/gdb-mcp-server.git
cd gdb-mcp-server
pip install -r requirements.txt

启动服务器

python server.py

✨ 主要特性

  1. 发现并附加到现有 GDB 进程:可自动识别并附加到正在运行的 GDB 实例。
  2. 终端窗口通信(macOS 优化支持 iTerm2):在 macOS 系统上能与 GDB 终端窗口进行交互,提供优质支持。
  3. MCP 协议集成:借助 MCP 协议实现工具间的通信与集成。
  4. 智能处理命令阻塞:自动检测并处理阻塞性命令(如 target remote),发送中断信号以避免死锁。
  5. 多架构和远程调试支持:支持多种处理器架构,还能连接远程调试目标。
  6. 函数调用执行常见调试操作:通过一系列工具函数可实现断点设置、内存检查、反汇编等常见调试任务。

📺 演示视频

项目提供了演示视频,展示了如何使用 GDB 调试服务器进行调试。点击下面的链接观看: 演示视频

📦 安装指南

下载与安装

  1. 克隆仓库:
    git clone https://github.com/your-username/gdb-mcp-server.git
    cd gdb-mcp-server
    
  2. 安装依赖:
    pip install -r requirements.txt
    

启动服务器

启动 GDB 调试服务器:

python server.py

💻 使用示例

基础用法

以下是使用工具函数的基础示例,展示如何查找运行的 GDB 进程:

# 调用系统工具函数查找所有运行的 GDB 进程
sys_find_gdb_processes()

高级用法

以下示例展示了如何组合使用工具函数进行调试操作,如设置断点并执行到下一行:

# 附加到指定的 GDB 进程
sys_attach_to_gdb(some_gdb_process_id)
# 设置断点
gdb_set_breakpoint('main')
# 执行到下一行
gdb_next()

📚 详细文档

工具函数

系统工具

  • 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 最佳实践

  1. 使用 iTerm2 作为终端模拟器,以获得最佳支持。
  2. 确保 GDB 终端窗口在启动服务器前已打开并处于前台。
  3. 对于远程调试,请先手动配置 GDB 设置,再通过服务器附加到目标。

常见问题

macOS 上的常见问题

  1. 窗口激活问题:如果 GDB 窗口无法正确激活,请手动将其置于前台。
  2. 输入法状态:确保 GDB 终端未处于中文或其他输入法状态,以免影响命令执行。
  3. 命令阻塞:对于阻塞性命令(如 target remote),服务器会自动发送中断信号以处理。

Linux 上的常见问题

  1. TTY 权限问题:确保当前用户有权限访问 GDB 进程的 TTY 设备。
  2. pexpect 依赖:确保已安装 pexpect 库,该库用于与 GDB 的交互式通信。

📄 许可证

本项目采用 MIT 许可证,具体条款请参阅 LICENSE 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端