MCP Go调试器
Go程序的调试器接口,与MCP(模型上下文协议)集成。
特性
- 启动和调试Go应用程序
- 附加到现有的Go流程
- 设置断点
- 单步执行代码(单步进入、单步跳过、单步退出)
- 评估变量
- 查看堆栈痕迹
- 列出当前作用域中的所有变量
- 获取当前执行位置
- 使用调试单个测试功能
debug_test - 与Delve调试器API类型的本机集成
- 在调试过程中捕获并显示程序输出
- 调试测试时支持自定义测试标志
- 具有可配置深度的详细变量检查
安装
先决条件
- 达到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/mcp.json):
{
"mcpServers": {
"go-debugger": {
"command": "mcp-go-debugger",
"args": []
}
}
}克劳德桌面
将MCP添加到Claude桌面:
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-列出当前作用域中的所有变量(local、args、package)get_execution_position-获取当前执行位置(文件、行、函数)get_debugger_output-从调试程序中检索捕获的stdout和stderrclose-关闭当前调试会话
基本使用示例
调试Go程序
让AI助手调试你的Go程序:
> Please debug my Go application main.goAI助手将使用MCP:
- 在启用调试的情况下启动程序
- 根据需要设置断点
- 评估变量和程序状态
- 帮助诊断问题
附加到正在运行的进程
如果你的Go应用程序已经在运行,你可以附加调试器:
> Attach to my Go application running with PID 12345查找Bug示例
> I'm getting a panic in my processOrders function when handling large orders.
> Can you help me debug it?AI将帮助您:
- 在相关函数中设置断点
- 在执行过程中评估变量
- 确定问题的根本原因
调试单个测试
如果你想调试一个特定的测试函数而不是整个应用程序:
> Please debug the TestCalculateTotal function in my calculator_test.go fileAI助手将使用 debug_test 工具用于:
- 仅启动启用调试的特定测试
- 在测试中的关键点设置断点
- 帮助您在测试执行时检查变量
- 逐步执行测试以识别问题
- 评估断言失败或意外行为
您还可以指定测试标志:
> Debug the TestUserAuthentication test in auth_test.go with a timeout of 30 seconds这对于以下情况特别有用:
- 不一致地失败的测试
- 具有多个断言的复杂测试
- 涉及并发性或时间问题的测试
- 了解测试如何与代码交互
检查复杂数据结构
使用嵌套结构或复杂类型时:
> Can you eval the user.Profile.Preferences object at line 45? I need to see all nested fields in detail.AI将:
- 在指定位置设置断点
- 使用
eval_variable具有适当深度参数的工具 - 格式化结构以便于理解
- 帮助浏览嵌套字段
使用命令行参数进行调试
要调试需要命令行参数的程序,请执行以下操作:
> Debug my data_processor.go with the arguments "--input=data.json --verbose --max-records=1000"调试器将:
- 使用指定的参数启动程序
- 允许您设置断点并评估参数如何影响执行
- 帮助跟踪参数值如何在程序中流动
使用Goroutines
对于并发Go程序的调试:
> I think I have a race condition in my worker pool implementation. Can you help me debug it?AI可以:
- 围绕goroutine创建和同步点设置策略断点
- 帮助评估通道状态和互斥锁
- 跟踪goroutine执行以识别竞争条件
- 为并发问题提出解决方案
逐步执行函数调用
为了理解复杂的控制流程:
> Walk me through what happens when the processPayment function is called with an invalid credit cardAI助手将:
- 在入口点设置断点
- 战略性地使用介入/跳过命令
- 显示执行路径
- 评估关键决策点的变量
- 解释程序流程
