MCP DAP服务器
一种模型上下文协议(MCP)服务器,通过调试适配器协议(DAP)提供调试功能。该服务器使AI助手和其他MCP客户端能够与各种编程语言的调试器进行交互。
概述
MCP DAP服务器充当MCP客户端和DAP兼容调试器之间的桥梁,允许对调试会话进行编程控制。它提供了一套全面的调试工具,可用于:
- 启动和停止调试会话
- 设置断点(基于行和基于函数)
- 控制程序执行(继续、介入/退出/结束、暂停)
- 检查程序状态(线程、堆栈跟踪、变量、作用域)
- 评估表达式
- 附加到正在运行的进程
- 处理异常
演示
特性
- 统一调试启动:单人
debug该工具处理源代码、二进制和附加模式 - 自动上下文:执行控制工具返回完整状态(位置、堆栈、变量)
- 简化的API:13个工具涵盖所有调试操作
- 断点管理:设置行和函数断点,运行到游标
- 全面状态检查:在一次调用中堆栈跟踪、作用域和变量
- 表达式求值:根据上下文评估和修改变量
- 工艺附件:附加到正在运行的进程
- 拆卸支架:查看内存地址处的反汇编代码
安装
先决条件
- 转到1.24.4或更高版本
- 适用于目标语言的DAP兼容调试器
从源头构建
git clone https://github.com/go-delve/mcp-dap-server
cd mcp-dap-server
go build -o bin/mcp-dap-server用法
通过MCP连接
服务器使用stdio传输,允许AI代理按需生成它。使用二进制文件的路径配置MCP客户端。
MCP客户端配置示例
此配置适用于 Gemini CLI 以及类似的MCP客户端:
{
"mcpServers": {
"dap-debugger": {
"command": "mcp-dap-server",
"args": [],
"env": {}
}
}
}Claude代码配置
claude mcp add mcp-dap-server /path/to/mcp-dap-server可用工具
会话管理
debug
启动调试会话。支持四种模式:
- 来源:编译和调试Go源代码
- 二进制:调试预编译的可执行文件
- 核心:调试核心转储文件
- 附加:附加到正在运行的进程
参数:
mode(字符串,必填):“源”、“二进制”、“核心”或“附加”之一path(string):源文件或二进制文件的路径(源/二进制模式需要;GDB的核心模式可选,可以自动检测)args(array):传递给程序的参数coreFilePath(string):核心转储文件的路径(核心模式需要)processId(数字):进程ID(附加模式所需)breakpoints(数组):运行前要设置的断点(文件:行或函数名)stopOnEntry(boolean):在程序入口点停止port(编号):DAP服务器端口
停止时返回完整上下文(位置、堆栈跟踪、变量)。
stop
结束调试会话。终止被调试对象并停止调试器。
restart
使用可选的新参数重新启动调试会话。
- 参数:
- arguments (数组,可选):新程序参数
断点
breakpoint
在file:行位置或函数上设置断点。
- 参数 (其中之一):
- file (字符串)+ line (number):源文件和行号 - function (string):函数名称
clear-breakpoints
从文件中删除断点或清除所有断点。
- 参数:
- file (字符串,可选):清除此文件中的断点 - all (布尔值,可选):清除所有断点
执行控制
continue
继续程序执行。可选择运行到特定位置。
- 参数:
- to (对象,可选):运行到光标目标(文件+行或函数)
停止时返回完整上下文。
step
逐步执行代码。
- 参数:
- mode (string,必填):“over”、“in”或“out”中的一个
返回新位置的完整上下文。
pause
暂停程序执行。
- 参数:
- threadId (number):要暂停的线程ID
状态检测
context
获取完整的调试上下文,包括当前位置、堆栈跟踪和所有变量。
- 参数:
- threadId (数字,可选):线程ID - frameId (数字,可选):堆栈帧ID
evaluate
在当前调试上下文中计算表达式。
- 参数:
- expression (string):要计算的表达式 - frameId (数字,可选):帧上下文 - context (字符串,可选):评估上下文('watch'、'repl'、'hover')
set-variable
修改调试程序中的变量值。
- 参数:
- variablesReference (number):从上下文引用的变量 - name (string):变量名称 - value (string):新值
项目信息
info
获取程序元数据。
- 参数:
- type (字符串,必填):“源”或“模块”之一
disassemble
在内存地址处反汇编代码。
- 参数:
- memoryReference (string):内存地址 - instructionOffset (数字,可选):地址偏移 - instructionCount (编号):拆卸说明编号
贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
