返回市场
麦普-go调试器

麦普-go调试器

作者:sunfmin9 星标更新:2025-04-02

项目介绍

MCP Go 调试器

适用于Go程序的调试器接口,与MCP(模型上下文协议)集成。

特性

  • 启动并调试Go应用程序
  • 连接到现有的Go进程
  • 设置断点
  • 单步执行代码(进入、跳过、跳出)
  • 评估变量
  • 查看堆栈跟踪
  • 列出当前作用域内的所有变量
  • 获取当前执行位置
  • 使用debug_test调试单个测试函数
  • 原生集成Delve调试器API类型
  • 在调试过程中捕获并显示程序输出
  • 支持自定义测试标志进行调试
  • 可配置深度的详细变量检查

安装

先决条件

  • Go 1.20或更高版本

使用Go

安装MCP Go调试器最简单的方法是使用Go:

go install github.com/sunfmin/mcp-go-debugger/cmd/mcp-go-debugger@latest

这将下载、编译并安装二进制文件到您的$GOPATH/bin目录。

从源码构建

或者,您可以从源码构建:

git clone https://github.com/sunfmin/mcp-go-debugger.git
cd mcp-go-debugger
make install

配置

Cursor

在您的Cursor配置中添加以下内容(~/.cursor/mcp.json):

{
  "mcpServers": {
    "go-debugger": {
      "command": "mcp-go-debugger",
      "args": []
    }
  }
}

Claude Desktop

将MCP添加到Claude Desktop:

claude mcp add go-debugger mcp-go-debugger

验证连接:

/mcp

使用

此调试器旨在与兼容MCP的客户端集成。提供的工具包括:

  • ping - 测试与调试器的连接
  • status - 检查调试器状态和服务器运行时间
  • launch - 启动带有调试功能的Go程序
  • attach - 连接到正在运行的Go进程
  • debug - 直接调试Go源文件
  • debug_test - 调试特定的Go测试函数
  • set_breakpoint - 在特定文件和行设置断点
  • list_breakpoints - 列出所有当前断点
  • remove_breakpoint - 移除断点
  • continue - 继续执行直到下一个断点或程序结束
  • step - 进入下一个函数调用
  • step_over - 跳过下一个函数调用
  • step_out - 退出当前函数
  • eval_variable - 以可配置深度评估变量值
  • list_scope_variables - 列出当前作用域内的所有变量(局部、参数、包)
  • get_execution_position - 获取当前执行位置(文件、行、函数)
  • get_debugger_output - 捕获并检索被调试程序的stdout和stderr
  • close - 关闭当前调试会话

基本使用示例

调试Go程序

请求AI助手调试您的Go程序:

> 请调试我的Go应用程序main.go

AI助手将使用MCP:

  • 启动带有调试功能的程序
  • 根据需要设置断点
  • 评估变量和程序状态
  • 帮助诊断问题

连接到正在运行的进程

如果您的Go应用程序已经在运行,可以附加调试器:

> 附加到我正在运行的PID为12345的Go应用程序

查找错误示例

> 我在我的processOrders函数处理大订单时遇到了panic。你能帮我调试吗?

AI将帮助您:

  1. 在相关函数中设置断点
  2. 在执行过程中评估变量
  3. 确定问题的根本原因

调试单个测试

如果您想调试特定的测试函数而不是整个应用程序:

> 请调试我在calculator_test.go文件中的TestCalculateTotal函数

AI助手将使用debug_test工具:

  • 启动仅包含特定测试的调试
  • 在测试的关键点设置断点
  • 帮助您在测试执行过程中检查变量
  • 逐步执行测试以识别问题
  • 评估断言失败或意外行为

您还可以指定测试标志:

> 调试auth_test.go中的TestUserAuthentication测试,超时时间为30秒

这对于以下情况特别有用:

  • 不一致地失败的测试
  • 包含多个断言的复杂测试
  • 涉及并发或计时问题的测试
  • 理解测试如何与您的代码交互

检查复杂的数据结构

当处理嵌套结构或复杂类型时:

> 能否在第45行评估user.Profile.Preferences对象?我需要详细查看所有嵌套字段。

AI将:

  • 在指定位置设置断点
  • 使用适当的深度参数使用eval_variable工具
  • 格式化结构以便于理解
  • 帮助导航嵌套字段

使用命令行参数调试

要调试需要命令行参数的程序:

> 调试我的data_processor.go,参数为"--input=data.json --verbose --max-records=1000"

调试器将:

  • 使用指定参数启动程序
  • 允许您设置断点并评估参数如何影响执行
  • 帮助跟踪参数值如何流经您的程序

处理Goroutines

对于调试并发的Go程序:

> 我认为我在worker池实现中有一个竞态条件。你能帮我调试它吗?

AI可以:

  • 在goroutine创建和同步点周围设置战略性断点
  • 帮助评估通道状态和互斥锁
  • 跟踪goroutine执行以识别竞态条件
  • 提供解决并发问题的建议

逐步执行函数调用

为了理解复杂的控制流程:

> 当processPayment函数被调用且信用卡无效时,带我看看会发生什么。

AI助手将:

  • 在入口点设置断点
  • 战略性地使用进入/跳过命令
  • 展示执行路径
  • 在关键决策点评估变量
  • 解释程序流程

许可证

MIT许可证