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
✨ 主要特性
- 发现并附加到现有 GDB 进程:可自动识别并附加到正在运行的 GDB 实例。
- 终端窗口通信(macOS 优化支持 iTerm2):在 macOS 系统上能与 GDB 终端窗口进行交互,提供优质支持。
- MCP 协议集成:借助 MCP 协议实现工具间的通信与集成。
- 智能处理命令阻塞:自动检测并处理阻塞性命令(如
target remote),发送中断信号以避免死锁。 - 多架构和远程调试支持:支持多种处理器架构,还能连接远程调试目标。
- 函数调用执行常见调试操作:通过一系列工具函数可实现断点设置、内存检查、反汇编等常见调试任务。
📺 演示视频
项目提供了演示视频,展示了如何使用 GDB 调试服务器进行调试。点击下面的链接观看: 演示视频
📦 安装指南
下载与安装
- 克隆仓库:
git clone https://github.com/your-username/gdb-mcp-server.git cd gdb-mcp-server - 安装依赖:
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 最佳实践
- 使用 iTerm2 作为终端模拟器,以获得最佳支持。
- 确保 GDB 终端窗口在启动服务器前已打开并处于前台。
- 对于远程调试,请先手动配置 GDB 设置,再通过服务器附加到目标。
常见问题
macOS 上的常见问题
- 窗口激活问题:如果 GDB 窗口无法正确激活,请手动将其置于前台。
- 输入法状态:确保 GDB 终端未处于中文或其他输入法状态,以免影响命令执行。
- 命令阻塞:对于阻塞性命令(如
target remote),服务器会自动发送中断信号以处理。
Linux 上的常见问题
- TTY 权限问题:确保当前用户有权限访问 GDB 进程的 TTY 设备。
- pexpect 依赖:确保已安装 pexpect 库,该库用于与 GDB 的交互式通信。
📄 许可证
本项目采用 MIT 许可证,具体条款请参阅 LICENSE 文件。
扫码联系在线客服